我正在尝试从Cloud Firestore的"m80KEXuYelOGutSLtQelQkIDj9H2"
数组中删除单个"players"
值。
日志显示String findTeam为CoolTeam1
,String userId为m80KEXuYelOGutSLtQelQkIDj9H2
我的代码是:
DocumentReference docRef = db.collection("teams").document(findTeam);
docRef.update({"players":FieldValue.arrayRemove(userId)});
我在Android Studio中为上述{
和})
获得了“意外令牌”。
任何想法都会受到赞赏吗?
我还尝试按照以下方式使用点符号,这可以运行但不会删除值:
db.collection("teams").document(findTeam).update("players." + userId, FieldValue.delete());
我也尝试过使用Map更新,它也可以运行并在日志中显示“成功删除播放器”。但是不会在Firestore中删除播放器。
Map<String,Object> updates = new HashMap<>();
updates.put(userId, FieldValue.delete());
doc.update(updates).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()){
Log.i(TAG, "Deleting player successful");
}
else{
Log.i(TAG, "Deleting player NOT successful");
}
}
});```
答案 0 :(得分:1)
您的第一个带有花括号的代码示例似乎正在尝试使用JavaScript语法而不是Java Android语法来更新文档。显然,那根本行不通。
FieldValue.delete()完全可以为您工作,因为这用于删除整个文档字段,而不是修改数组。如FieldValue.arrayRemove()所示,您将改为使用documentation。请确保使用Java Android语法。
尝试以下方法:
db.collection("teams").document(findTeam).update("players",
FieldValue.arrayRemove(userId));
答案 1 :(得分:0)
最终想通了...
导入课程:
import static com.google.firebase.firestore.FieldValue.arrayRemove;
然后使用:
db.collection("teams").document(findTeam).update("players", arrayRemove(userId));