从文档顺序中获取第一个Firestore文档(Node.js)

时间:2020-10-03 23:19:57

标签: javascript node.js firebase google-cloud-firestore

我要做什么:我想从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);
});

};

1 个答案:

答案 0 :(得分:2)

您的变量docQuerySnapshot对象(不是 DocumentSnapshot)。从API文档中可以看到,它没有名为exists的属性,因此if (!doc.exists)将始终为真。

由于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。