检查firebase子项是不是具有特定值[重复]
Posted
技术标签:
【中文标题】检查firebase子项是不是具有特定值[重复]【英文标题】: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 在这个问题上给我指导。
【问题讨论】:
没有原子方法可以防止树中出现重复的值。解决方案通常是有一个额外的数据结构,其中值用作键,因为根据定义,节点中的子键保证是唯一的。见***.com/q/39912201、***.com/a/25328654、***.com/a/20291163、***.com/a/35244705 【参考方案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 我认为你有一些逻辑错误 也许吧。我会用你的方法做更多的测试。谢谢。以上是关于检查firebase子项是不是具有特定值[重复]的主要内容,如果未能解决你的问题,请参考以下文章