我执行以下批次:
batch.set(doc, {
"Users": {
[userKey]: null
}
}, { merge: true })
它为关系设置空值但不删除它。
我需要像在实时数据库中那样删除对象的字段和值,而不是保留空值。
如果我使用firebase.firestore.FieldValue.delete()只适用于该对象而不适用于其字段。
答案 0 :(得分:1)
无论好坏,Firestore将null
值视为与不存在的字段不同,因此将值设置为null
不会做您想要的。
FieldValue.delete()
删除字段的方式,而不是文档,因此应该删除字段:
batch.set(doc, {
"Users": {
[userKey]: firebase.firestore.FieldValue.delete()
}
}, { merge: true });
但是,目前发布的SDK中存在一个错误,导致无法按预期工作。现在使用
batch.update(
'Users.userKey',
firebase.firestore.FieldValue.delete());