【问题标题】:How to create a nested object from req.query?如何从 req.query 创建嵌套对象?
【发布时间】:2019-03-23 13:55:52
【问题描述】:

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

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 }]

【问题讨论】:

    标签: arrays node.js object


    【解决方案1】:

    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;
        }
    };
    

    【讨论】:

      【解决方案2】:

      您也可以尝试使用Object.assign,它将遍历对象的自身属性和必要的新属性。

      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 = Object.assign(event[0].data, { myKey: myValue }); 
            break;
        }
      };
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-06-09
        • 1970-01-01
        • 2019-10-06
        • 1970-01-01
        • 2022-01-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多