我正在尝试更新/删除Firestore文档中的字段,但是在尝试更新/删除它们时,名称中带有“句点”的字段似乎无提示地失败。我有句号的原因是我将URL用作对象中的键,我觉得这是一个半普通的用例。
例:
首先创建文档(可以正常工作)

db.collection("data").doc("temp").set({
  helloworld: {
      key1: 'foo'
  },
  hello.world: {
      key1: 'bar'
  }
})
如果您尝试删除不带句点的元素,则效果很好。
db.collection("data").doc("temp").update({
    helloworld: firebase.firestore.FieldValue.delete()
})
// Value is Deleted
如果您尝试删除带有句点的元素,则它不会执行任何操作。
db.collection("data").doc("temp").update({
    hello.world: firebase.firestore.FieldValue.delete()
})
// Nothing Happens!
我也尝试过
let u = {}
u['hello.world'] = firebase.firestore.FieldValue.delete()
db.collection("data").doc("temp").update(u)
// Nothing Happens!
这是一个错误吗?是否支持字段名称中的句点?我可以创建该元素但不能删除它,这似乎很奇怪。

最佳答案

在更新或删除中使用名称中的句点时,需要将其用引号引起来,例如:

db.collection("data").doc("temp").update({
  "hello.world": firebase.firestore.FieldValue.delete()
})

或动态名称:
[`hello.${world}`]: firebase.firestore.FieldValue.delete()

07-24 09:47
查看更多