java通知用户Firebase数据库id是否存在
我想在插入id之前检查它是否已经存在(防止更新已经存在的id)。 这是我目前掌握的代码:
database.child(id).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
Toast.makeText(getApplicationContext(), "it exists.", Toast.LENGTH_SHORT).show();
}
else {
Toast.makeText(getApplicationContext(), "it's OK.", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
Toast.makeText(getApplicationContext(), databaseError.getMessage(), Toast.LENGTH_SHORT).show();
}
});
问题是,当id不存在时,它会同时显示两个祝酒词。但是,当它确实存在时,它只显示“它存在”一个
我如何显示“它存在”仅当id存在时才吐司/如何防止“它存在”当id不存在时显示的吐司
编辑:
Firebase数据库结构:
-DATABASE
-ID
-NAME
-DESCRIPTION
# 1 楼答案
请这样做:
由于
valueeventListener
将遍历所有子项(id),因此您将同时获得Toast
存在的和不存在的使用
addListenerForSingleValueEvent
则它将仅在您之前指定的id中迭代# 2 楼答案
尝试用
addListenerForSingleValueEvent
替换addValueEventListener
方法因为
addValueEventListener
可能会因为数据的变化而被调用两次,这就是它第一次显示同一id的Exist和than not Exist的原因对于
addListenerForSingleValueEvent
,firebase声明它应该:# 3 楼答案
像这样试试