Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 对象不支持属性或方法“forEach”_Javascript_Google Cloud Firestore - Fatal编程技术网

Javascript 对象不支持属性或方法“forEach”

Javascript 对象不支持属性或方法“forEach”,javascript,google-cloud-firestore,Javascript,Google Cloud Firestore,我试图从Firestore上的Firestore获取数据,但它返回的这个对象没有foreach方法。我还尝试在下面的console语句中进行console:console.log这不起作用,但另一个console.log起作用。 代码如下: let fstore = firebase.firestore(); fStore .collection('user-info') .doc(userID) .get() .then(function (querySnapshot) {

我试图从Firestore上的Firestore获取数据,但它返回的这个对象没有foreach方法。我还尝试在下面的console语句中进行console:console.log这不起作用,但另一个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);
      }
    });
  });

看这里:

可以检查单据是否为空

   if (querySnapshot.docs.length === 0) {
     return;
  } else {
    querySnapshot.forEach(doc => {
    });
  }
fStore.collectionuser-info.docuserID.get不会生成QuerySnapshot。它会生成一个DocumentSnapshot,因为它只能返回一个文档,即您在文档中标识的文档。DocumentSnapshot没有forEach方法,因为没有可迭代的内容

您应该只调用所获取对象的数据:

fStore
  .collection('user-info')
  .doc(userID)
  .get()
  .then(function (snapshot) {
    const data = snapshot.data();
  })
您的第二个查询可以返回多个文档,因为它要求集合中的每个文档,所以您得到一个QuerySnapshot intead


这里的底线是,获取DocumentReference只能返回单个文档,而获取CollectionReference或查询可以返回多个文档。它们是不同类型的查询,具有不同的结果。

您确定您确实从API返回了数据吗?
fStore
  .collection('user-info')
  .doc(userID)
  .get()
  .then(function (snapshot) {
    const data = snapshot.data();
  })