无法在异步Firebase方法的for每个循环之外发送响应

时间:2019-07-16 23:27:37

标签: javascript node.js google-cloud-firestore

无法在异步Firebase方法的for每个循环之外发送响应。当我在for-each循环中发送响应时,它只给出一次,但是我需要程序末尾的整个数组。

const admin = require("firebase-admin");
const functions = require("firebase-functions");

admin.initializeApp(functions.config().firebase);

let db = admin.firestore();

exports.helloWorld = functions.https.onRequest(function(request, response) {
  var dat = [];
  var dat1 = [];
  db.collection("users")
    .get()
    .then(function(snapshot) {
      dat.push(element.id);
      return snapshot;
    })
    .catch(err => {
      console.log("Error getting documents", err);
    });
  dat.forEach(element => {
    db.collection("users")
      .doc(element.id)
      .collection("profile")
      .doc(element.id)
      .collection("pet")
      .doc(element.id)
      .get()
      .then(snapshot => {
        dat1.push(snapshot.data()["bio"]);
        return snapshot;
      })
      .catch(err => {
        console.log("Error getting documents", err);
      });
  });
  response.send(dat1);
});

我必须从firebase数据库中获取数据数组。当我发送响应时,它返回一个空数组,如上面的示例所示。我是Javascript和Node.js编程的初学者。

0 个答案:

没有答案