如何检查Cloud Firestore中集合中所有文档中是否都存在字段值?

时间:2019-08-23 12:04:33

标签: javascript firebase google-cloud-firestore

如何对照值检查集合中所有文档中的一个字段?

我正在为我的同事设置一个数字提示,以跟踪我们从冰箱中取出的物品。 我们的卡上都有一个4位数字,我们想用来登录,然后存储从公司冰箱中取出的东西(并在月底付款)

我有一个集合,其中包含用户名及其编号。输入代码时,我想检查整个集合是否存在。

My Firebase with Users and ID (nummer)

此帖子之后Check if value exists in firebase DB 我的代码设置如下:

ref.child("nutzer").orderByChild("nummer").equalTo("1337").once("value",snapshot => {
     if (snapshot.exists()){
       const userData = snapshot.val();
       console.log("exists!", userData);
     }
     else{
     console.log("does not exists!");
 });  

在运行代码时,出现错误“ ref.child不是函数”。 试图弄清楚为什么我得到这个错误,我发现了这篇文章:"ref.child is not a function" when adding .orderByChild.StartAt filter  但找不到解决我的初始问题的方法。

亲切的问候。

1 个答案:

答案 0 :(得分:1)

您使用的代码来自firebase实时数据库,但是您的数据存储在firebase firestore中(firebase提供了两种不同类型的数据库)

Firestore最近添加了可以在多个集合文档中进行搜索的集合组查询,例如

var nummers = db.collectionGroup('nutzer').where('nummer', '==', '1337');
nummers.get().then(function (querySnapshot) {
    querySnapshot.forEach(function (doc) {
        console.log(doc.id, ' => ', doc.data());
    });
});

要测试数据是否存在,只需在处理之前为初始查询快照添加日期,然后检查.empty属性。例如

nummers.get().then(function (querySnapshot) {
   return !querySnapshot.empty
})

有关在Firestore中进行查询的更多信息,请访问: https://firebase.google.com/docs/firestore/query-data/queries