我需要找出在Firebase中是否存在其字段中具有特定值的子项。
下面是我的数据库结构:
发布于 2018-02-27 19:58:11
在您的例子中,您可以像这样设置查询:
DatabaseReference reference = FirebaseDatabase.getInstance().getReference();
Query query = reference.orderByChild("chat_id").equalTo("CHAT_ID_To_COMPARE");
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
for (DataSnapshot issue : dataSnapshot.getChildren()) {
// do something with the individual object
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
这将在服务器端过滤数据,而不需要在应用程序端过滤数据。
发布于 2018-02-27 19:53:03
要检查字段是否存在,可以执行以下操作:
DatabaseReference ref=FirebaseDatabase.getInstance().getReference().child("bdxhATalcDRJCiZZcUFUJo3yrJF2");
ref.addValueEventListener(new ValueEventListener(){
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot.exists()){
//then it exists
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
这将检查数据库中是否存在child("bdxhATalcDRJCiZZcUFUJo3yrJF2")
。
如果您这样做:
ref=FirebaseDatabase.getInstance().getReference().child("bdxhATalcDRJCiZZcUFUJo3yrJF2").orderByChild("chat_id").equalTo(chatid);
然后,它将检查该子项是否也存在于数据库中
发布于 2018-02-27 19:55:00
postRef = FirebaseDatabase.getInstance().getReference().child("bdxhATalcDRJCiZZcUFUJo3yrJF2");
postRef.orderByChild("chat_id").equalTo(chat_id)
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot.exists()){
//bus number exists in Database
} else {
//bus number doesn't exists.
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
https://stackoverflow.com/questions/49007971
复制相似问题