我正在尝试开发一个具有 2 种不同视图的系统,第一个是"我的书"和第二个"其他人的书">
对于第一个视图,我工作正常
this.mybooks = angFire.database.list('/user-books', {
query: {
orderByChild: 'uid',
equalTo: firebase.auth().currentUser.uid
}
});
但我不知道如何创建可以用作"notEqualTo"函数的东西来排除当前用户拥有的所有书籍。
这是我的火力基础结构供参考
{
"user-books" : {
"-KfJ9CprqgOWN9Ud_CvG" : {
"author" : "sdasd",
"city" : "asd",
"description" : "asdasd",
"title" : "asda",
"uid" : "bazvEYBL6sgfa6HSmqvtAlX3f0l2"
},
"-KfJARoEU_FDW80hg4ws" : {
"author" : "in",
"city" : "chaaat",
"description" : "the",
"title" : "Pogchamps",
"uid" : "tzROGF1Tk4NcobrTE70ZKQzoKom1"
}
}
}
您当前使用的 Firebase 数据结构(将书籍嵌套在用户对象中)可能不适合您的确切用途。Firebase 文档有一个专门讨论这个问题的部分。其中一个小节的标题为"避免嵌套数据"。
更好的结构将使书籍标准化并将它们放在单独的集合/表中。为了存储用户的书籍,您仍然可以拥有 books 数组,但只需在其中存储 books 表中的键 (id)。
然后,列出其他人的书籍只是列出书籍表中的所有书籍并过滤掉当前用户的书籍。
请注意,尤其是在像 Firebase 这样的数据存储中,最佳数据结构完全取决于您如何使用数据。将用户书籍链接存储在用户对象中是一种好方法,仅当您的应用专注于列出用户的书籍时。相反,如果重点是列出一本书的用户,那么最好将用户 ID 数组存储在书籍集合中。