为了账号安全,请及时绑定邮箱和手机立即绑定

从 Firebase 中的另一个键附加属性

从 Firebase 中的另一个键附加属性

Smart猫小萌 2021-10-20 11:37:51
我有一个数据库定义如下 我可以检索cafeList如下: ApiManager.getInstance().mainDB.child(CafeModel.DATASET_NAME)                .orderByChild("name").startAt(searchText)                .endAt(searchText + "\uf8ff")                .addValueEventListener(new ValueEventListener()但是,我不确定如何附加特定咖啡馆也被我的用户设置为最喜欢的事实。
查看完整描述

1 回答

?
千巷猫影

TA贡献1829条经验 获得超7个赞

不幸的是,在 Firebase 中无法仅使用单个查询来实现这一点。所以在你的情况下,你应该查询你的数据库两次,一次是为了获取咖啡馆列表,第二次是检查这些咖啡馆对象之一是否是最喜欢的。但是,有一种解决方法,您可以在名为的用户对象中创建一个新部分favoriteCafe,您可以在其中添加所有用户最喜欢的咖啡馆,但这意味着复制数据。这种做法被称为denormalizationFirebase 的常见做法。为了更好地理解,我建议您观看此视频,Firebase 数据库的非规范化是正常的。因此,在这种情况下,如果您想知道用户最喜欢的咖啡馆,您可以使用单个查询并在这个新创建的位置附加一个侦听器。

此外,当您复制数据时,需要记住一件事。与添加数据的方式相同,您需要维护它。换句话说,如果你想更新/删除一个项目,你需要在它存在的每个地方都做。


查看完整回答
反对 回复 2021-10-20
  • 1 回答
  • 0 关注
  • 181 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信