Tcc*_*tnn 10 javascript firebase google-cloud-firestore
我有一个数据结构,如:
我想在"第一个"对象中编辑"test"键的值.我按照https://firebase.google.com/docs/firestore/manage-data/add-data上的文档进行操作
但它对我不起作用.
nodejs代码:
var setAda = dbFirestore.collection('users').doc('alovelace').update({
first : {
test: "12345"
}
});
Run Code Online (Sandbox Code Playgroud)
"test2"键消失了.但是,我只想更新"test"的值并保留"test2".
解决这个问题的任何方法?
小智 25
彼得的解决方案很棒,但它不适用于动态密钥。这段代码要好得多:
var nestedkey = 'test';
var setAda = dbFirestore.collection('users').doc('alovelace').update({
[`first.${nestedkey}`]: "12345"
});
Run Code Online (Sandbox Code Playgroud)
Pet*_*dad 14
根据您提供的链接,它说:
如果您的文档包含嵌套对象,则在调用update()时可以使用“点表示法”引用文档中的嵌套字段:
因此,您需要使用dot notation仅能更新一个字段而不会覆盖的功能,如下所示:
var setAda = dbFirestore.collection('users').doc('alovelace').update({
"first.test": "12345"
});
Run Code Online (Sandbox Code Playgroud)
那么您将拥有:
first
test: "12345"
test2: "abcd"
Run Code Online (Sandbox Code Playgroud)
如果有人使用TypeScript(例如在 Cloud 函数中),这里是用点表示法更新嵌套字段的代码。
var setAda = dbFirestore.collection('users').doc('alovelace').update({
`first.${variableIfNedded}.test`: "12345"
});
Run Code Online (Sandbox Code Playgroud)
如果您不希望在 'first' 字段不存在时发生异常,请尝试使用setwith{merge: true}选项而不是update.
var setAda = dbFirestore.collection('users').doc('alovelace').set({
first : {
test: "12345"
}
}, {merge: true});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4992 次 |
| 最近记录: |