Чтобы сохранить ресторан в качестве избранного, необходимо создать Map
, а не массив под каждым пользовательским документом. Согласно официальной документации :
Хотя 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);