在火力云公司的FireStore
删除一对多的关系我执行如下的批处理:在火力云公司的FireStore
batch.set(doc, {
"Users": {
[userKey]: null
}
}, { merge: true })
它把空值的关系,但并没有将其删除。
我需要删除对象的字段和值,因为它在实时数据库中不会保留空值。
如果我使用firebase.firestore.FieldValue.delete()只适用于对象而不适用于其字段。
无论好坏,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());
我试过这个:“[userKey]:firebase.firestore.FieldValue.delete()”,但失败表示它只能与根字段一起工作。 –
然后试试这个:''Users.userKey',firebase.firestore.FieldValue.delete()“,但我不知道如何将”userKey“设置为动态值。 –
如果你想在一个名为userKey的变量中删除userKey,你可以连接:'Users'。 + userKey。字段路径只是字符串。 –
您是否尝试过使用batch.doc(docid).collection('Users').doc('userKey').delete()? – Kato
batch.doc(docid).collection('Users').doc('userKey').delete()将用'Users'子集合删除'userKey'文档,但不删除文档中的字段' FieldValue.delete()'是做到这一点的方法。 –