在Firestore中使用forEach和单个文档查询?

时间:2018-03-15 10:53:01

标签: javascript firebase google-cloud-firestore

当我知道返回的文档引用数量只有1时,我该如何为Firestore编写查询?

const query = firebase.firestore().collection('Users').where('mobile', '==', '<some mobile number>').limit(1);

要从此查询中获取文档,我正在使用forEach循环。有没有办法在不使用循环的情况下获取文档及其数据?

let docId;

query.get().then((snapShot) => {
    snapShot.forEach((doc) => {
        docId = doc.id;
    });
    if(docId) {
        // doc exists
        // do something with the data...
    }
}).catch((error) => console.log(error.message));

2 个答案:

答案 0 :(得分:1)

您只需使用snapShot[0]访问第一个元素即可。 forEach函数只遍历snapShot数组中的每个元素。

答案 1 :(得分:1)

行。我想到了。

可以在.docs()对象上使用snapShot方法来获取与查询匹配的所有文档的数组。

因此,如果我只有一个文档,我可以按如下方式访问它:

query.get().then((snapShot) => {

    const doc = snapShot.docs[0];

    const docId = doc.id;
    const docData = doc.data();
    // so stuff here...

}).catch((error) => console.log(error.message));