Как создать вложенный объект из req.query? - PullRequest
0 голосов
/ 23 марта 2019

Я пытаюсь создать объект, который будет использоваться для публикации в сетке событий.Существуют свойства верхнего уровня, такие как EventType , Тема , DataVersion и EventTime .Тем не менее, я бы хотел, чтобы все, что предусмотрено в 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 }]

Ответы [ 2 ]

0 голосов
/ 23 марта 2019

Вы также можете попробовать с 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;
  }
};
0 голосов
/ 23 марта 2019

Определите 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;
    }
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...