Firebase数据库 - 在另一个对象

时间:2017-06-05 19:29:35

标签: android firebase firebase-realtime-database

我希望通过它的标题来获取这本书,但是这个查询会返回所有节点而不进行任何过滤。有关如何进入 volumeInfo 并按标题过滤的任何建议?

mDatabaseReference.child(userId)
                .child(REF_FOLDERS)
                .child(REF_MY_BOOKS_FOLDER)
                .child(REF_BOOKS)
                .orderByChild("volumeInfo")
                .startAt(bookQuery,"title")
                .addListenerForSingleValueEvent(buildValueEventListener(onDataSnapshotListener));

enter image description here

2 个答案:

答案 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
            })

这可能会对你有帮助。