火力地堡云公司的FireStore查询没有找到我的文档
这里是我的数据的图片: 火力地堡云公司的FireStore查询没有找到我的文档
我试图得到该文档。这工作:
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);
});
它返回:
即,如果我知道文档的关键,我可以得到该文档。
这不起作用:
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);
});
它只是返回No such document!
这有什么错我的查询?
两个请求的不同之处在于,在第一种情况下,您将检索一个文档,该文档为您提供了一个DocumentSnapshot
,该文档具有exists
属性和data()
方法。
在你做一个查询第二种情况下,它给你一个QuerySnapshot
必须被从DocumentSnapshot
不同的处理。您可以获取文档列表/文档集合,而不是单个文档。您可以检查数据是否已经被使用empty
或size
性检索,然后通过结果使用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);
});
谢谢,但它仍然无法正常工作。用你的代码,我得到这个错误信息:“NOT_FOUND,这个文件不存在。在调用doc.data()之前检查doc.exists以确保文件存在。”我试着添加“console.log(querySnapshot.exists);”并回到“未定义”。这听起来像我的查询是不好的。有任何想法吗? –
如果您查看了我链接到的'QuerySnapshot'文档,您将会看到它没有'exist'属性,所以它总是未定义的。我已经写了一篇简短的文章,可能会澄清一些事情:https://medium.com/@scarygami/cloud-firestore-quicktip-documentsnapshot-vs-querysnapshot-70aef6d57ab3 – Scarygami
这工作!我把你的中篇文章upvoted,这很清楚。 –
请用于代码的语言标记。这是JavaScript。 – tadman