检查Cloud Firestore查询是否返回了某些内容

时间:2019-02-05 19:35:47

标签: javascript firebase google-cloud-firestore

让我们说我的Cloud Firestore像这样:

users
  ├────random_id_1───{name, email, ...}
  ├────random_id_2───{name, email, ...}
 ...
  └────random_id_n───{name, email, ...}

我创建了一个CollectionReference

var collectionReference = db.collection("users");

然后我创建了一个Query

var query = collectionReference.where("name", "==", "John");

我的目标是检查查询是否找到了东西,我只想要这个答案(以便可以在if-else语句中使用它)。

如果可能的话,即使可行,我也不想使用该方法:

query.get().then(function(querySnapshot) {
    if (querySnapshot.empty) {
        console.log('no documents found');
    } else {
        // do something with the data
    }
});

提供太多有关查询的简单布尔值的代码太多。

1 个答案:

答案 0 :(得分:1)

您共享的是一种惯用的方法来检查文档是否存在,因此没有更好的选择。

我唯一想到的是,如果您所在的环境支持async / await,在这种情况下,您可以这样做:

let querySnapshot = await query.get();
if (querySnapshot.empty) {
    console.log('no documents found');
} else {
    // do something with the data
}

您甚至可以将前两行压缩为:

if ((await query.get()).empty) {
  ...

我不太喜欢最后机会。像这样隐藏复杂性总是在某些时候最终成为泄漏的抽象。