检查Firebase中是否存在具有特定查询的对象

时间:2016-06-03 12:28:11

标签: ios firebase firebase-realtime-database

我想检查某个属性设置为某个值的对象是否存在。

以下是我在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"的条目,完成将永远不会被调用。但是,如果因为互联网问题或仅因为该对象确实存在而未被调用,我应该怎么知道?!

2 个答案:

答案 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)