我想做的是:我想从Firestore中的集合中获取第一个文档,当涉及文档中的“描述”时,应从ZA订购。
问题:它告诉我“没有这样的文件!”。虽然应该输出1个文件。
这是代码:
getPost();
async function getPost() {
const postRef = db.collection('posts');
const doc = await postRef.orderBy('description', 'desc').limit(1).get()
.then(doc => {
if (!doc.exists) {
console.log('No such document!');
} else {
console.log('Document data:', doc.data());
}
})
.catch(err => {
console.log('Error getting document', err);
});
};
您的变量doc
是QuerySnapshot对象(不是DocumentSnapshot)。从API文档中可以看到,它没有名为的属性exists
,因此if (!doc.exists)
始终为true。
由于QuerySnapshot对象始终考虑包含多个文档的可能性(即使您指定limit(1)
),因此您仍然必须检查其结果集的大小以了解您获得了多少文档。您可能应该这样做:
const querySnapshot = await postRef.orderBy('description', 'desc').limit(1).get()
if (querySnapshot.docs.length > 0) {
const doc = querySnapshot.docs[0];
console.log('Document data:', doc.data());
}
还要注意,如果您正在使用await从返回的promise捕获查询结果,则无需使用then / catch。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句