【问题标题】:is it possiblle to add dynamic field name in the Javascript Object?是否可以在 Javascript 对象中添加动态字段名称?
【发布时间】:2020-04-16 12:18:09
【问题描述】:

我正在尝试添加动态字段名称并根据该名称更新值。在我的情况下,eventType 有 4 种类型的传递、发送、打开、单击。当我尝试使用此代码时,我得到了唯一的 eventType作为一个字符串。

 const event = JSON.parse(req.body);
  // const xyz = JSON.parse(JSON.parse(req.body.Message))
  // console.log(xyz)
    const message = JSON.parse(event.Message);
    console.log(message)
    const eventType = message.eventType;


  await db.collection('Emails').doc(message.mail.commonHeaders.to[0]).set(
   { eventType: message,
    timestamp: Date.now(),
  },
  { merge:false },);

这是一个端点代码,eventType 是我上面提到的事件。

【问题讨论】:

  • 像任何 JS 对象一样:[eventType]: message
  • 我不清楚这里的问题是什么。请编辑问题以解释此代码在做什么,以及它与您的预期有何不同。

标签: javascript node.js google-cloud-firestore


【解决方案1】:

动态键可以添加到 JSON 对象中。

例子:

var key = 'age'
var keys = ['name','gender'];
var data = {};

如果您想在运行时确定需要使用 [] 的键,那么这里有个问题,因为它允许表达式进行计算,即

data[keys[0]] = 'Rohan'
//keys[0] will interpreted to name during the execution
//data ==>> {name:'Rohan'}

data.key = '19'
//"key" will be treated as an individual entity i.e. as a valid key name
//data ==>> {key:'19'}
//whereas
data[key] = '19'
//results in data ==>> {age:'19'}

还要注意,如果你在 [] 中包含一个双“”,它也将被视为一个单独的实体

data['key'] = '19'
// data ==>> {key:'19'}

【讨论】:

  • 我认为最快的方法是```data['key'] = '19'``
猜你喜欢
  • 2010-11-14
  • 1970-01-01
  • 1970-01-01
  • 2021-01-08
  • 1970-01-01
  • 1970-01-01
  • 2015-12-12
  • 1970-01-01
相关资源
最近更新 更多