2017-06-05 130 views
0

我想通过它的标题来获取此书,但是此查询将所有节点返回给我,而不进行任何过滤。关于如何进入volumeInfo和筛选条件标题Firebase数据库 - 查询另一个对象内的对象

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

回答

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

火力地堡具有在对象方法“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 
      }) 

这可能会帮助你。

+0

感谢暗示这一点,@Rodrigo。但现在没有结果回来。有趣的是,如果我这样做与id完美的作品。看起来像volumeInfo作为一个对象不能像这样过滤。还尝试了volumeInfo.title,但firebase抱怨说没有特殊字符可以使用。 –

相关问题