无法用Firestore数据填充数组

时间:2019-08-12 02:49:33

标签: javascript firebase google-cloud-firestore

我正在尝试构建Firestore网络应用。我配置了数据库等...一切都正确。 但是我现在正尝试从Firebase中获取数据,将其存储在变量中(或用这些数据填充数组),然后对该变量进行计算,我将每30秒更新一次(我这样做是为了限制查询的次数)。

我可以毫无问题地访问并读取数据,但是我无法添加它们。我尝试将变量放在全局变量中,将其作为参数传递给函数,但没有任何效果。

这是我的代码:

userArray = [];

db.collection("scenario-name").get().then(function(querySnapshot) {
      querySnapshot.forEach(function(doc) {
          userArray.push(doc.id);
      });
});


console.log(userArray);

但是我得到了这样的东西:

https://ibb.co/j3YdfLj

我还尝试了.push.apply,或者定义了一个函数并在其中传递userArray,或者甚至做了这种事情:

userArray = [];

db.collection("scenario-name").get().then(function(querySnapshot) {
      querySnapshot.forEach(function(doc) {
          apply(doc);
      });
});

function apply(doc){
    userArray.push(doc.id);
}

我可以存储用于查询整个文档的firestore查询并对其进行处理吗?还是应该对所有内容进行查询?如何存储在变量中?

谢谢!

1 个答案:

答案 0 :(得分:0)

您的代码显示为直接从Firestore文档中粘贴的,因此我可以想象问题出在存储在Firestore中的数据或数据的结构。

Get all documents in a collection

db.collection("cities").get().then(function(querySnapshot) {
    querySnapshot.forEach(function(doc) {
        // doc.data() is never undefined for query doc snapshots
        console.log(doc.id, " => ", doc.data());
    });
});

您做对了,创建一个空的数组变量,然后迭代querySnapshot,在每次迭代中推送文档的ID。使用.get()验证从console.log获得的收益。你应该很好。