当我想更新recipIds用户文档中的数组列表时,数组列表被擦除并设置新值。我试图获取旧收藏,然后为其添加新价值并进行更新,但这似乎有点过分了。public void saveRecipeIds(User user) { String currentUserId = mAuth.getCurrentUser().getUid(); Map<String, Object> userMap = new HashMap<>(); userMap.put("recipeIds", user.getRecipesIds()); db.collection("users").document(currentUserId).update(userMap);}我想用新值更新我的数组列表而不擦除旧列表数据。这是它在 Firestore 中的样子:https://imgur.com/a/LUnYxsa
1 回答
PIPIONE
TA贡献1829条经验 获得超9个赞
要更新数组,您应该在以下代码行中recipeIds
使用like:FieldValue.arrayUnion
db.collection("users").document(currentUserId) .update("recipeIds", FieldValue.arrayUnion("newRecipeId"));
编辑:
为了能够更新数组,例如通过添加新元素,您需要向方法传递arrayUnion()
一个字符串(id 本身)。您不能传递列表或字符串数组。你不可能那样做。您可以一个接一个地从数组中添加/删除元素。
如果你想用另一个数组更新数组,你应该首先从数据库中获取文档,在客户端进行必要的更改,然后将其写回数据库。
添加回答
举报
0/150
提交
取消