我想做的是浏览Firebase数据库,看是否有某个值,如果没有,则什么都不做,如果没有,则向该节点添加另一个值。
我的Firebase集合如下所示:
appname{
Collection{
key : value
key : value
key : value
再次,我想查看输入的值是否等于集合中的任何值。如果没有,则应将输入的值添加到集合中。
编辑:我被告知要显示我使用的无效代码。因为我尝试了其他事情,所以我删除了代码。但是我会尽力记住它的状态。在这里:
reference.child("strings").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot n : dataSnapshot.getChildren()){
if (n == inputedString) {
break;
}
ref.child("strings").setValue(inputedString);
}
}
同样,我不确定这是否是正确的代码,但它与此相似。我已将此答案用作帮助,但无法根据自己的需要进行调整:docs
我遇到的问题是我的数据库一次又一次地无限填充。
答案 0 :(得分:0)
您的代码正在有效地监听其所做的更改。每次对setValue的调用都会触发您传递给addValueEventListener
的对象的另一个回调。如果只想遍历每个孩子一次而不听更新,请使用addListenerForSingleValueEvent
而不是addValueEventListener
。