如何在Cloud Function中访问包含空格的字段名?
解决Firestore中带空格字段名的读取问题
嘿,这个场景太常见了——当数据源不受控制,字段名带空格或者特殊字符时,确实没法用常规的点语法访问属性。不过别担心,JavaScript的方括号语法就是专门解决这个问题的!
你只需要把字段名用字符串形式放进方括号里,就能轻松读取对应的属性值了。针对你的代码,修改方式如下:
exports.updateUser = functions.firestore .document('users/{userId}') .onUpdate((change, context) => { // 获取更新后的文档数据 const newValue = change.after.data(); // 获取更新前的文档数据 const previousValue = change.before.data(); // 读取带空格的'FIRST NAME'字段 const firstName = newValue['FIRST NAME']; // 同理,读取旧值里的该字段也一样 const oldFirstName = previousValue['FIRST NAME']; // 接下来就可以用这些值执行你的逻辑啦... });
为什么这么做?
JavaScript的点语法(比如newValue.name)只能识别符合标识符规则的属性名——也就是不能包含空格、不能以数字开头、不能有特殊符号(除了下划线和美元符号)。而方括号语法newValue['属性名']则可以接受任意字符串作为属性名,完美适配这类来自外部的特殊字段名。
如果你的字段名是动态的(比如存在变量里),这种方式同样适用:
const targetField = 'FIRST NAME'; const fieldValue = newValue[targetField];
内容的提问来源于stack exchange,提问作者Damandroid
相关产品推荐
相关产品推荐

