我希望通过它的标题来获取这本书,但是这个查询会返回所有节点而不进行任何过滤。有关如何进入 volumeInfo 并按标题过滤的任何建议?
mDatabaseReference.child(userId)
.child(REF_FOLDERS)
.child(REF_MY_BOOKS_FOLDER)
.child(REF_BOOKS)
.orderByChild("volumeInfo")
.startAt(bookQuery,"title")
.addListenerForSingleValueEvent(buildValueEventListener(onDataSnapshotListener));
答案 0 :(得分:1)
最后我发现了如何做到这一点。我必须使用斜杠来访问对象中的属性。
像这样:
mDatabaseReference.child(userId)
.child(REF_FOLDERS)
.child(REF_MY_BOOKS_FOLDER)
.child(REF_BOOKS)
.orderByChild("volumeInfo/title") // here I get title from volumeInfo
.equalTo(bookQuery)
.addListenerForSingleValueEvent(buildValueEventListener(onDataSnapshotListener));
答案 1 :(得分:0)
Firebase的方法是" equalTo"从对象中过滤属性中的值,例如" volumeInfo"在你的对象中。 如果你喜欢这样,那就行了:
mDatabaseReference.child(userId)
.child(REF_FOLDERS)
.child(REF_MY_BOOKS_FOLDER)
.child(REF_BOOKS)
.orderByChild("volumeInfo")
.equalTo("titleSearched")
.then (function (snapshot){
console.log(snapshot.val()) // will print the title searched by volumeInfo
})
这可能会对你有帮助。