Android Firebase Datatabase-另一个对象中的查询对象

Android Firebase Datatabase-另一个对象中的查询对象,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我想通过书名获取这本书,但是这个查询返回我所有的节点,没有任何过滤。关于如何进入volumeInfo并按标题过滤有什么建议吗 Firebase的方法equalTo可以从对象中过滤属性中的值,就像对象中的volumeInfo一样。 如果您喜欢这样做,将工作: mDatabaseReference.child(userId) .child(REF_FOLDERS) .child(REF_MY_BOOKS_FOLDER) .chi

我想通过书名获取这本书,但是这个查询返回我所有的节点,没有任何过滤。关于如何进入volumeInfo并按标题过滤有什么建议吗


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

这可能会对你有所帮助。

我终于知道怎么做了。我必须使用斜杠来访问对象中的属性

像这样:

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));

谢谢你的建议,罗德里戈。但是现在没有结果了。有趣的是,如果我用id做的话,效果会很好。看起来volumeInfo作为对象不能以这种方式进行筛选。还尝试了volumeInfo.title,但firebase抱怨无法使用特殊字符。
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));