gpt4 book ai didi

javascript - 无法更新/删除名称中包含 "period"的 Firestore 字段

转载 作者:数据小太阳 更新时间:2023-10-29 04:35:59 26 4
gpt4 key购买 nike

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

这是一个错误吗?是否支持字段名称中的句点?我可以创建元素但不能删除它,这似乎很奇怪。

最佳答案

更新操作正在读取 hello.world 作为一个名为 word 的字段的点分隔路径,该字段嵌套如下:

{
hello: {
world: "Some value"
}
}

如果您有一个名称中带有点的字段,您需要使用 FieldPath 在更新中逐字引用它: https://firebase.google.com/docs/reference/js/firebase.firestore.FieldPath

这就是你想要的:

doc.update(
firebase.firestore.FieldPath("hello.world"),
firebase.firestore.FieldValue.delete());

关于javascript - 无法更新/删除名称中包含 "period"的 Firestore 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47801910/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com