2017-02-13 64 views
0

我正在嘗試爲我的某個表執行嵌套查詢,但它最終返回表中date較大的表中的所有值,而不是返回表中所有值,其中userId = userIddate在表中大Firebase多個查詢不起作用

DatabaseReference tableAttendObject = getDatabaseTableWith(Constants.tableAttendObject); 
Query query = tableAttendObject.orderByChild(Constants.AttendObjectUserUUID).equalTo(userId); 
query = query.getRef().orderByChild(Constants.AttendObjectEventDate).startAt(date); 

query.addValueEventListener(new ValueEventListener() { 
//return logic 

我的數據模型是這樣的:

->id->userId 
    ->date 
+1

您可以在火力地堡查詢單個屬性只能訂購/過濾器。 @ uguboz的答案顯示了一種可能工作的解決方案,但也可以參見http://stackoverflow.com/questions/26700924/query-based-on-multiple-where-clauses-in-firebase –

回答

2

如果你已經知道用戶ID,爲什麼你是一個查詢? 只是這樣做

Query query = tableAttendObject.child(userId) 
.orderByChild(Constants.AttendObjectEventDate) 
.startAt(date).addValueEventListener(new ValueEventListener() { 
.... 
+0

這隻適用於'id = userId',我必須只檢索一個對象...在我的情況下,'id'是一個不同的id,可以是它的幾個實例。 – John

+0

Aha ok。然後改變你的數據庫模式。從訂單中刪除用戶標識。並將訂單ID添加到用戶的節點,例如用戶1:{order1id:true; order2id:true等}這樣你可以識別屬於任何用戶的訂單 – uguboz