Firebase Android - 检查值是否已存在

时间:2017-09-07 18:27:13

标签: android firebase

我需要有关检查数据库中是否已存在该值的帮助,以便用户在更新时无法将其更改为相同的数字,例如唯一ID

我一直在寻找解决方案的时间,但我找不到任何有效的方法。

ID

2 个答案:

答案 0 :(得分:2)

为实现此目的,我建议您创建另一个名为userIds的节点。每次创建新用户时,只需在此新部分中添加用户ID即可。这个新部分应如下所示:

Firebase-root
    --- userIds
      --- Id101: true
      --- Id102: true

然后只需在这个新节点节点上放置一个侦听器,并在dataSnapshot对象上使用exists()方法。

答案 1 :(得分:0)

按照建议,你应该有一个数据结构,一个索引列表,为什么?因为当你有大量的 ids 时,它将是一个更好的查询。但是,我认为你要做的是对以前的建议的补充。

您需要做的是使用单个事件侦听器,如果数据快照不为null,则该值存在。关键是查询您需要的ID:

DatabaseReference root = FirebaseDatabase.getInstance.getReference();
DatabaseReference reference = root.child("Test").oderByChild("ID").equalsTo(someId);

reference.addSingleValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
       if (dataSnaphot != null) {
       //This means the value exist, you could also dataSnaphot.exist()
       }
    }
    //More auto generated code
);

dataSnapshot是一堆对象,因为查询可以匹配多个结果。如果你需要每个值的值,你可以在里面迭代:

public void onDataChange(DataSnapshot dataSnapshot) {
           if (dataSnaphot != null) {
           for (DataSnapshot children : dataSnaphot.getChildrens()) {
               YourModel yourModel = children.getValue(YourModel.class);
           }
           }
        }