猿问

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

我有一个数据库定义如下 

我可以检索cafeList如下:


 ApiManager.getInstance().mainDB.child(CafeModel.DATASET_NAME)

                .orderByChild("name").startAt(searchText)

                .endAt(searchText + "\uf8ff")

                .addValueEventListener(new ValueEventListener()

但是,我不确定如何附加特定咖啡馆也被我的用户设置为最喜欢的事实。


Smart猫小萌
浏览 182回答 1
1回答

千巷猫影

不幸的是,在 Firebase 中无法仅使用单个查询来实现这一点。所以在你的情况下,你应该查询你的数据库两次,一次是为了获取咖啡馆列表,第二次是检查这些咖啡馆对象之一是否是最喜欢的。但是,有一种解决方法,您可以在名为的用户对象中创建一个新部分favoriteCafe,您可以在其中添加所有用户最喜欢的咖啡馆,但这意味着复制数据。这种做法被称为denormalizationFirebase 的常见做法。为了更好地理解,我建议您观看此视频,Firebase 数据库的非规范化是正常的。因此,在这种情况下,如果您想知道用户最喜欢的咖啡馆,您可以使用单个查询并在这个新创建的位置附加一个侦听器。此外,当您复制数据时,需要记住一件事。与添加数据的方式相同,您需要维护它。换句话说,如果你想更新/删除一个项目,你需要在它存在的每个地方都做。
随时随地看视频慕课网APP

相关分类

Java
我要回答