Firebase Cloud Firestore 查询找不到我的文档

Firebase Cloud Firestore query not finding my document

这是我的数据图片:

我正在尝试获取该文档。这有效:

var docRef = db.collection('users').doc('jPDKwHyrFNXNTFI5qgOY');
docRef.get().then(function(doc) {
  if (doc.exists) {
    console.log("Document data:", doc.data());
  } else {
    console.log("No such document!");
  }
}).catch(function(error) {
  console.log("Error getting document:", error);
});

它returns:

也就是说,如果我知道文档的密钥,我就可以获得该文档。

这行不通:

db.collection('users').where('uid', '==', 'bcmrZDO0X5N6kB38MqhUJZ11OzA3')
.get().then(function(querySnapshot) {
  if (querySnapshot.exists) {
    console.log(querySnapshot.data);
  } else {
    console.log("No such document!");
  }
})
.catch(function(error) {
  console.log("Error getting document: ", error);
});

只是 returns No such document! 我的查询有什么问题?

你的两个请求的不同之处在于,在第一种情况下,你正在检索一个文件,它给你一个 DocumentSnapshot,其中有 exists 属性 和 data()方法。

在第二种情况下,您执行查询,这会为您提供一个 QuerySnapshot,必须以不同于 DocumentSnapshot 的方式处理。您得到的不是单个文档,而是 list/collection 个文档。您可以使用 emptysize 属性检查是否已检索到数据,然后使用 forEach 方法或通过 docs 数组查看结果:

db.collection('users').where('uid', '==', 'bcmrZDO0X5N6kB38MqhUJZ11OzA3')
.get().then(function(querySnapshot) {
  if (querySnapshot.size > 0) {
    // Contents of first document
    console.log(querySnapshot.docs[0].data());
  } else {
    console.log("No such document!");
  }
})
.catch(function(error) {
  console.log("Error getting document: ", error);
});

我的项目遇到了同样的问题。首先,您的数据库中必须有一个与 .where('objectid',==, 'object.id') 匹配的对象,然后才能让您的数据循环。像 querysnapshot.docs.forEach((d) => d.data());