我正在尝试更新/删除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()