我有一个数据库定义如下 我可以检索cafeList如下: ApiManager.getInstance().mainDB.child(CafeModel.DATASET_NAME) .orderByChild("name").startAt(searchText) .endAt(searchText + "\uf8ff") .addValueEventListener(new ValueEventListener()但是,我不确定如何附加特定咖啡馆也被我的用户设置为最喜欢的事实。
1 回答
千巷猫影
TA贡献1829条经验 获得超7个赞
不幸的是,在 Firebase 中无法仅使用单个查询来实现这一点。所以在你的情况下,你应该查询你的数据库两次,一次是为了获取咖啡馆列表,第二次是检查这些咖啡馆对象之一是否是最喜欢的。但是,有一种解决方法,您可以在名为的用户对象中创建一个新部分favoriteCafe
,您可以在其中添加所有用户最喜欢的咖啡馆,但这意味着复制数据。这种做法被称为denormalization
Firebase 的常见做法。为了更好地理解,我建议您观看此视频,Firebase 数据库的非规范化是正常的。因此,在这种情况下,如果您想知道用户最喜欢的咖啡馆,您可以使用单个查询并在这个新创建的位置附加一个侦听器。
此外,当您复制数据时,需要记住一件事。与添加数据的方式相同,您需要维护它。换句话说,如果你想更新/删除一个项目,你需要在它存在的每个地方都做。
添加回答
举报
0/150
提交
取消