删除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进行另一次查询。