我想检查某个属性设置为某个值的对象是否存在。
以下是我在Firebase上的数据的示例:
object: {
object-one: {
id: "something"
}
}
现在我想获取一个id不存在的对象:
let objectsRef = FIRDatabase.database().reference().child("object")
let query = objectsRef.queryOrderedByChild("id").queryEqualToValue("something else")
query.observeSingleEventOfType(.Value, withBlock: { (snapshot) in
// Never get's called
})
由于没有id = "something else"
的条目,完成将永远不会被调用。但是,如果因为互联网问题或仅因为该对象确实存在而未被调用,我应该怎么知道?!
答案 0 :(得分:1)
您可以使用valueEventListner。它获取当前数据并侦听任何进一步的更新。如果数据不存在,dataSnapshot.exists()将返回false。
e.g。 我的数据库包含用户对象列表,其中emailId是每个用户对象中的一个字段。
[
user1: {emailId: abc@xyz.com},
user2: {emailId: abc1@xyz1.com}
]
我可以通过emailId字段进行搜索,并检查该用户是否存在。
ref.orderByChild("emailId").equalTo("unavailable@xyz.com").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
System.out.println(dataSnapshot.exists());//false, if values is not present
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
答案 1 :(得分:0)