javascript 如何使用Firebase admin和fire.js将后端连接到前端[复制]

1szpjjfi  于 11个月前  发布在  Java
关注(0)|答案(1)|浏览(115)

此问题在此处已有答案

How do I return the response from an asynchronous call?(41个答案)
昨天就关门了。
我想将数据从 /API/firestore/read.js 传递到 * mainServer.js *。
它确实有文档,可以打印,但不返回数据。

文件 mainServer.js

app.get("/api/profile", async (req, res) => {
  const uid = req.user.uid;
  const userReader = new usersReader(uid);
  const data = await userReader.readData();
  console.log("Data", data); // data is undefined
  res.status(200).send(data);
});

字符串

文件 * 读取.js*

const admin = require("../../firebase-config").admin;
class ReadFireDb {
  constructor(_uid) {
    this.uid = _uid;
  }

  async readData() {
    await admin
      .firestore()
      .collection("users")
      .doc(this.uid)
      .get()
      .then((snapShot) => {
        if (snapShot.exists) {
          console.log(snapShot.data()); // here i print data correctly
          return snapShot.data(); // here is the problem
        } else {
          return null;
        }
      })
      .catch((err) => console.log(err));
  }
}

module.exports = {
  ReadFireDb,
};


返回此数据的正确方法是什么?

eqzww0vc

eqzww0vc1#

这就是答案:
只需对文件 read.js 进行一些更改:

const admin = require("../../firebase-config").admin;
class ReadFireDb {
  data;
  constructor(_uid) {
    this.uid = _uid;
  }

  async readData() {
    await admin
      .firestore()
      .collection("users")
      .doc(this.uid)
      .get()
      .then((snapShot) => {
        if (snapShot.exists) this.data = snapShot.data();
      })

      .catch((err) => console.log(err));
    return this.data;
  }
}

module.exports = {
  ReadFireDb,
};

字符串

相关问题