You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firebase Cloud Firestore如何使用变量作为字段名存储数据?

如何在Firebase Cloud Firestore中使用变量作为字段名

当然可以实现这个需求!你当前的函数思路完全正确,只是在JavaScript对象的语法上需要做一点调整——直接在set()的对象字面量里用模板字符串作为键的写法在早期JS里不支持,但ES6的计算属性名正好能解决这个问题。

正确的实现方式

你只需要把字段名用方括号[]包裹起来,就能直接用变量作为Firestore文档的字段名了,修改后的函数如下:

setFavorite(channelID: string, favorite: boolean): Promise<void> {
  return this.fireStore.firestore.doc(`favorites/${mycustomID}`)
    .set({ [channelID]: favorite }, { merge: true });
}

这里有两个关键点:

  • 用[channelID]代替原来的${channelID},这是ES6计算属性名的语法,它会把变量channelID的值作为对象的键。
  • 我添加了{ merge: true }选项,这样如果文档已经存在,只会更新指定的字段而不会覆盖整个文档——如果你希望每次调用都完全替换文档,可以去掉这个选项。

调用示例

比如你要存储Madonna: true、Queen: false、MJackson: true这三组数据,只需要分三次调用这个函数:

await setFavorite('Madonna', true);
await setFavorite('Queen', false);
await setFavorite('MJackson', true);

执行后,favorites/${mycustomID}这个文档里就会有你想要的字段和对应值了。

额外说明

如果想一次性设置多个字段,也可以用同样的语法先构建对象:

const favorites = {
  ['Madonna']: true,
  ['Queen']: false,
  ['MJackson']: true
};
// 或者更简洁的字面量写法
const favorites = {
  Madonna: true,
  Queen: false,
  MJackson: true
};
this.fireStore.firestore.doc(`favorites/${mycustomID}`).set(favorites);

这样就能轻松实现用变量动态指定Firestore字段名的需求啦!

内容的提问来源于stack exchange,提问作者NorthFred

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:56:10