【问题标题】:Object doesn't support property or method 'forEach对象不支持属性或方法'forEach
【发布时间】:2020-09-03 11:00:39
【问题描述】:

我尝试从 Firestore 上的 Firestore 获取数据,但它返回此对象没有 foreach 方法。我还尝试在下面的控制台语句中进行控制台:console.log("this") 不起作用,但另一个 console.log 起作用。 代码如下:

let fstore = firebase.firestore();
fStore
  .collection('user-info')
  .doc(userID)
  .get()
  .then(function (querySnapshot) {
    querySnapshot.forEach(function (doc) {
      if (doc.id != userID) {
        // doc.data() is never undefined for query doc snapshots
        user_list2.push(doc.data());
        console.log('this');
      }
    });
  });

fStore
  .collection('User')
  .get()
  .then(function (querySnapshot) {
    querySnapshot.forEach(function (doc) {
      if (doc.id != userID) {
        // doc.data() is never undefined for query doc snapshots
        user_list.push(doc.data());
        console.log(user_list);
        console.log(user_list.length);
      }
    });
  });

【问题讨论】:

  • 您确定您实际上是从 API 获取数据吗?

标签: javascript google-cloud-firestore


【解决方案1】:
let query = firestore.collection('col').where('foo', '==', 'bar');

query.get().then(querySnapshot => {
  let docs = querySnapshot.docs;
  for (let doc of docs) {
    console.log(`Document found at path: ${doc.ref.path}`);
  }
});

看这里:https://googleapis.dev/nodejs/firestore/latest/QuerySnapshot.html

您可以检查文档是否为空

   if (querySnapshot.docs.length === 0) {
     return;
  } else {
    querySnapshot.forEach(doc => {
    });
  }

【讨论】:

    【解决方案2】:

    fStore.collection("user-info").doc(userID).get() 不会生成 QuerySnapshot。它会生成一个 DocumentSnapshot,因为它只能返回一个文档 - 您在 doc() 中标识的那个。 DocumentSnapshot 没有 forEach 方法,因为没有可迭代的内容。

    你应该只在你得到的对象上调用 data() :

    fStore
      .collection('user-info')
      .doc(userID)
      .get()
      .then(function (snapshot) {
        const data = snapshot.data();
      })
    

    您的第二个查询可以返回多个文档,因为它要求集合中的每个文档,因此您会得到一个 QuerySnapshot。

    这里的底线是 DocumentReference 上的 get() 只能返回一个文档,而 CollecitonReference 或 Query 上的 get() 可以返回多个文档。它们是具有不同结果的不同类型的查询。

    【讨论】:

      猜你喜欢
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      • 2019-07-05
      • 2015-04-14
      • 2015-04-09
      • 2014-01-12
      • 2016-08-20
      • 2013-10-05
      相关资源
      最近更新 更多