[英]How to check if the field exists in firestore?
我正在检查名为attending
的 Boolean 字段是否存在,但我不确定该怎么做。
是否有 function 之类的.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");
}
}
}
});
您现在所做的是正确的 - 您必须阅读文档并检查快照以查看该字段是否存在。 没有更短的方法可以做到这一点。
您可以执行以下操作:
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。
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");
}
});
这是实现它的方法,或者您可能已经解决了,这对于任何寻找解决方案的人来说都是如此。
根据文档:
CollectionReference citiesRef = db.collection("cities");
Query query = citiesRef.whereNotEqualTo("capital", false);
此查询返回每个城市文档,其中 capital 字段的值不是 false 或 null。 这包括首都字段值等于 true 或除 null 之外的任何非布尔值的城市文档。
欲了解更多信息: https://cloud.google.com/firestore/docs/query-data/order-limit-data#java_5
我用下面的 boolean 方法可能别人可以
for(QueryDocumentSnapshot document: task.getResult()){
if(document.contains("attending")){
attending = document.getBoolean("attending");
}
}
我没有找到任何解决方案,所以我要做的是尝试 - 抓住:
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 的新手,所以不确定这是处理此问题的最佳方法.. 但它对我有用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.