firebase 如何检查firestore中是否存在该字段?

mitkmikd  于 2023-01-18  发布在  其他
关注(0)|答案(6)|浏览(153)

我正在检查名为attending的布尔字段是否存在,但我不确定如何执行此操作。
是否有.child().exists()或类似的函数可以使用?

firebaseFirestore.collection("Events")
    .document(ID)
    .collection("Users")
    .get()
    .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
        @Override
        public void onComplete(@NonNull Task<QuerySnapshot> task) {
            if(task.isSuccessful()) {
                for(QueryDocumentSnapshot document: task.getResult()){
                    attending = document.getBoolean("attending");
                }
            }
        }
    });
p4rjhz4m

p4rjhz4m1#

你现在所做的是正确的--你必须阅读文档并检查快照,看看该字段是否存在。没有更短的方法可以做到这一点。

iezvtpos

iezvtpos2#

您可以执行以下操作:

if(task.isSuccessful()){
    for(QueryDocumentSnapshot document: task.getResult()){
       if (document.exists()) {
          if(document.getBoolean("attending") != null){
             Log.d(TAG, "attending field exists");
          }
        }
      }
  }

来自文档:
public boolean exists ()
如果文档存在于此快照中,则返回true。

fgw7neuy

fgw7neuy3#

这里是你可以实现它,或者你可能已经解决了,这对任何一个寻找解决方案。
根据文件:

CollectionReference citiesRef = db.collection("cities");

Query query = citiesRef.whereNotEqualTo("capital", false);

此查询返回capital字段值不为false或null的每个城市文档。这包括capital字段值等于true或除null之外的任何非布尔值的城市文档。

  • 如需了解更多信息 *:https://cloud.google.com/firestore/docs/query-data/order-limit-data#java_5
nwwlzxa7

nwwlzxa74#

我用下面的布尔方法可能别人也可以

for(QueryDocumentSnapshot document: task.getResult()){
    if(document.contains("attending")){
           attending = document.getBoolean("attending");
    }
}
zpf6vheq

zpf6vheq5#

我没有找到任何解决办法,所以我只能试着接:

bool attendingFieldExists = true;
  DocumentSnapshot querySnapshot = 
  // your Document Query here
  FirebaseFirestore.instance 
      .collection('collection')
      .doc(FirebaseAuth.instance.currentUser?.uid)
      .get();
  // trying to get "attending" field will throw an exception
  // if not existing
  try {
    querySnapshot.get("attending");
  } catch (e) {
    attendingFieldExists = false;
    print("oops.. exception $e");
  }

然后你可以根据attendingFieldExists修改你想要应用的代码。我是Flutter / Dart的新手,所以不确定这是处理这个问题的最好方法。

dphi5xsq

dphi5xsq6#

You can check firestore document exists using this,

CollectionReference mobileRef = db.collection("mobiles");
 await mobileRef.doc(id))
              .get().then((mobileDoc) async {
            if(mobileDoc.exists){
            print("Exists");
            }
        });

相关问题