首页 > 解决方案 > 是否可以在 Javascript 对象中添加动态字段名称?

问题描述

我正在尝试添加动态字段名称并根据该名称更新值。在我的情况下,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 是我上面提到的事件。

标签: javascriptnode.jsgoogle-cloud-firestore

解决方案


可以将动态键添加到 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'}

推荐阅读