问题描述
假设一个 firestore 数据库充满了这个结构,是 Events 和 Users 集合:
Firestore
-Events
-1612483200
-peopleSignedDict
-Alex
-state: 1
-Mark:
-state: 0
-1606172400
-peopleSignedDict
-Users
-1zyXSMMlgiaUusUNLQWAxfsI4pM2
-name: Alex
-4zyXSMMlgiaUusUNLQWAxfsI4pM2
-name: Mark
我正在使用 Node.js 并尝试更新 Events.1612483200.peopleSignedDict.Alex.state
以将状态从 1 更改为 0。为了实现它,我正在尝试执行以下操作:
var randomName = getRandomdbname();
db.collection('Events').doc('1612483200').set({
'peopleSignedDict.'+randomName+'.state': 0
});
但是我的 IDE (PHPStorm) 对我大喊大叫,告诉我这个语法无效,这应该是解决这个问题的正确语法吗?
解决方法
有几种方法可以做到这一点。
我最喜欢的是先在一个单独的变量中构造键,然后在集合中使用它:
let randomName = getRandomDBName();
let updates = {};
updates['peopleSignedDict.'+randomName+'.state'] = 0;
db.collection('Events').doc('1612483200').update(updates);
但是一个常见的(更短的)替代方法是:
let randomName = getRandomDBName();
db.collection('Events').doc('1612483200').update({
[`peopleSignedDict.${randomName}.state`]: 0;
});
我实际上不确定最后一个片段中是否需要 []
,所以如果您遇到问题,请在没有它们的情况下尝试并告诉我。