首页 > 解决方案 > 如何从 req.query 创建嵌套对象?

问题描述

我正在尝试创建一个用于发布到事件网格的对象。有顶级属性,例如EventTypeSubjectDataVersionEventTime。但是,我希望将提供给 req.query 的任何其他内容作为子项添加到 data 属性中。目前,下面的代码只添加了最后一项req.queryvs 继续添加/附加到它。

let parms = req.query;

for (var i in parms) {
  let myKey = i;
  let myValue = req.query[i];

  switch (i) {
    case 'eventtype':
      event[0].eventtype = myValue;
      break;

    case 'subject':
      event[0].subject = myValue;
      break;

    default:
      event[0].data = { [myKey]: myValue };
      break;
  }
}

输出

eventTime: 2019-03-23T13:47:26.069Z,
dataVersion: '2.0',
eventtype: 'build',
subject: 'build' },
data: { color: 'red' } ]

期望的结果

eventTime: 2019-03-23T13:47:26.069Z,
dataVersion: '2.0',
eventtype: 'build',
subject: 'build' },
data: { color: red, power: on }]

标签: arraysnode.jsobject

解决方案


定义data为对象,然后将键和值附加到data.

let parms = req.query;

for (var i in parms) {

    let myKey = i;
    let myValue = req.query[i];

    switch (i) {

        case "eventtype":
            event[0].eventtype = myValue;
            break;

        case "subject":
            event[0].subject = myValue;
            break;

        default:
            if (event[0].data) {
                event[0].data[myKey] = myValue;
            } else {
                event[0].data = { [myKey]: myValue }
            }
            break;
    }
};

推荐阅读