我是Cloud Firestore
的新手,我想在我的Android应用中实现最喜欢的动作。我有一个餐厅列表,每个餐厅都有一个最喜欢的动作。
因此,一旦用户点击收藏夹按钮,我应该在Firestore的列表中针对该用户保存餐馆的名称。
在使用餐厅之后,用户还可以点击不受欢迎的按钮,然后我应该从列表中删除该用户的条目。
我是用SQLite完成的,任何人都可以帮我在Cloud Firestore中做这件事吗?
答案 0 :(得分:1)
要将餐馆保存为收藏,您需要在每个用户文档下创建Map
而不是数组。根据{{3}}:
虽然Cloud Firestore可以存储数组,但它不支持查询数组成员或更新单个数组元素。
所以你的数据库结构应如下所示:
Firestore-root
|
--- users
|
--- uid
|
--- // user details
|
--- favoriteRestaurants
|
--- restaruantIdOne: true
|
--- restaruantIdTwo: true
在代码中,应该如下所示:
Map<String, Object> favoriteRestaurants = new HashMap<>();
Map<String, Object> restaurant = new HashMap<>();
restaurant.put("restaruantIdOne", true);
favoriteRestaurants.put("favoriteRestaurants", restaurant);
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
DocumentReference uidRef = rootRef.collection("users").document(uid);
uidRef.update(favoriteRestaurants);
如果您想从收藏夹中删除该餐厅,请使用以下代码:
Map<String, Object> restaurant = new HashMap<>();
restaurant.put("favoriteRestaurants.restaruantIdOne", FieldValue.delete());
uidRef.update(restaurant);