【问题标题】:Check if firebase child has a specific value [duplicate]检查firebase子项是否具有特定值[重复]
【发布时间】:2018-11-13 11:23:08
【问题描述】:

我有一个基于 firebase 数据库的应用聊天,我想知道是否已经存储了特定值。

根据上面的结构,如何防止两个相等的值(红色)插入同一个孩子(蓝色)?

编辑

我解决了这个问题如下: 1)我通过唯一的用户名改变了每个节点的推送值; 2)我用下面的代码检查了重复值:

FirebaseDatabase.getInstance().getReference().child("friend").child(value_in_blue)
        .addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                if(!dataSnapshot.hasChild(username)) {
                    //value does not exists
                }
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {
            }
        });

感谢 Frank van Puffelen 和 Jins Lukose 在这个问题上给我指导。

【问题讨论】:

标签: java android firebase firebase-realtime-database


【解决方案1】:

Firebase 提供 hasChild() 方法来检查 pirticuler 孩子的值是否存在。您可以参考link了解更多详情

【讨论】:

    【解决方案2】:

    试试这个

    fdbRefer.child("give your value").addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
    if(dataSnapshot.exist() {
    //comes here if exit
    }
    else {
    //if not exist
    }
    }
    });
    

    【讨论】:

    • 这样可以防止插入任何值!
    • @afazolo 在插入下一个值之前使用它。我在一个项目中也使用过这个
    • 好的。但是一旦我输入了一个值,我就不能再插入另一个了!
    • @afazolo 我认为你有一些逻辑错误
    • 也许吧。我会用你的方法做更多的测试。谢谢。
    猜你喜欢
    • 2013-03-25
    • 2020-07-31
    • 1970-01-01
    • 2015-04-27
    • 2017-10-09
    • 1970-01-01
    • 1970-01-01
    • 2018-02-09
    • 2021-12-25
    相关资源
    最近更新 更多