{
"random_key 1" : {
"id": 0,
"text": "This is text"
},
"random_key 2" : {
"id": 1,
"text": "This is text"
}
}
如果我以這種方式存儲我的數據,並且我想獲取id
等於0
的節點。我怎樣才能做到這一點?Firebase查詢數據
以上是issue
的小孩,它是root
的小孩。
{
"random_key 1" : {
"id": 0,
"text": "This is text"
},
"random_key 2" : {
"id": 1,
"text": "This is text"
}
}
如果我以這種方式存儲我的數據,並且我想獲取id
等於0
的節點。我怎樣才能做到這一點?Firebase查詢數據
以上是issue
的小孩,它是root
的小孩。
你的情況,你就必須建立一個這樣的查詢:
DatabaseReference reference = FirebaseDatabase.getInstance().getReference();
Query query = reference.child("issue").orderByChild("id").equalTo(0);
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
// dataSnapshot is the "issue" node with all children with id 0
for (DataSnapshot issue : dataSnapshot.getChildren()) {
// do something with the individual "issues"
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
可以請你幫我解決這個問題中的相同類型的問題: - http://stackoverflow.com/q/42502024/3946958 ...你可以告訴我你的答案是什麼「問題」? ??? –
它適用於我,,但你能告訴我們如何過濾數據與多個選項..喜歡用戶從國家,州,市 –
但是,如果我不想orderByChild命令?我只是想通過id匹配...對我來說,命令結果是額外的計算。 – dsharew
@ Linxy的答案是正確的,但既然你是從數據庫中讀取項目的列表,最好使用兒童事件偵聽器而不是值事件偵聽器。
DatabaseReference reference = FirebaseDatabase.getInstance().getReference();
Query query = reference.child("issue").orderByChild("id").equalTo(0);
query.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
//Do something with the individual node here`enter code here`
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
此代碼對我的作品
mFirebaseDatabase.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(final DataSnapshot dataSnapshot) {
for (DataSnapshot data : dataSnapshot.getChildren()) {
//If email exists then toast shows else store the data on new key
if (!data.getValue(User.class).getEmail().equals(email)) {
mFirebaseDatabase.child(mFirebaseDatabase.push().getKey()).setValue(new User(name, email));
} else {
Toast.makeText(ChatListActivity.this, "E-mail already exists.", Toast.LENGTH_SHORT).show();
}
}
}
@Override
public void onCancelled(final DatabaseError databaseError) {
}
});
對於火力地堡的一個易於使用的跨平臺整合,你也可以看看V-Play Engine for mobile apps
FirebaseDatabase {
id: firebaseDb
Component.onCompleted: {
//use query parameter:
firebaseDb.getValue("public/bigqueryobject", {
orderByKey: true, //order by key before limiting
startAt: "c", //return only keys alphabetically after "c"
endAt: "m", //return only keys alphabetically before "m"
limitToFirst: 5, //return only first 5 sub-keys
})
}
}
我的措辭我的問題有點不同,但我的帖子中的答案應該可以幫助你。 http://stackoverflow.com/questions/39023945/how-to-get-data-from-real-time-database-in-firebase/39024068#39024068 –
如果你已經有一個現有的ID,爲什麼你不存儲該ID下的數據?它將使查找更容易。 –
@FrankvanPuffelen我已經存儲在ID下的所有數據;我需要傳遞哪個值以通過該ID查詢orderChild? – Shruti