删除firebase cloud firestore中的许多关系
我执行以下批处理:删除firebase cloud firestore中的许多关系,firebase,cloud,google-cloud-firestore,Firebase,Cloud,Google Cloud Firestore,我执行以下批处理: batch.set(doc, { "Users": { [userKey]: null } }, { merge: true }) 它为关系放置空值,但不删除它 我需要像在实时数据库中一样删除对象的字段和值,并且不要保留空值 如果我使用firebase.firestore.FieldValue.delete(),则只对对象有效,而不对其字段有效。无论好坏,firestore都会将null值视为与不存在的字段不同,因此将值设置为null不会起到任何作用
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中存在一个bug,阻止它按预期工作。暂时使用
batch.update(
'Users.userKey',
firebase.firestore.FieldValue.delete());
您是否尝试过batch.doc(docid).collection('Users').doc('userKey').delete()?batch.doc(docid).collection('Users').doc('userKey').delete() 将使用
Users
子集合删除userKey
文档,但不删除文档FieldValue中的字段。删除()
就是这样做的。我尝试了以下方法:“[userKey]:firebase.firestore.FieldValue.delete()”但失败,表明它只对根字段有效。然后尝试以下方法:“'Users.userKey',firebase.firestore.FieldValue.delete()”但我不知道如何将“userKey”设置为动态值。如果在名为userKey的变量中有要删除的userKey,则可以将其串联为:'Users.'+userKey.字段路径只是字符串。此测试也已完成,但不起作用。串联时('Users.'+UserKey)不接受UserKey字符串,然后以这种方式连接它('Users.'+[UserKey])并给出错误我最终做的是Kato建议的,我将用户作为集合而不是对象。问题是,当我想要获得关系时,我必须对firebase进行另一次查询。