разбор тела-парсера по индексу

Использование DataTables для интерфейса и nodejs+express+mongoose+body-parser для сервера

Когда я пытался удалить строку в таблице, это то, что передается на сервер (HTTP DELETE)

action:remove
data[5957c1368225f446c84dde9b][_id]:5957c1368225f446c84dde9b
data[5957c1368225f446c84dde9b][updatedAt]:2017-07-01T15:35:18.407Z
data[5957c1368225f446c84dde9b][createdAt]:2017-07-01T15:35:18.407Z
data[5957c1368225f446c84dde9b][account]:[email protected]
data[5957c1368225f446c84dde9b][name]:Beryl Welch
data[5957c1368225f446c84dde9b][number]:074-882-4899 x241
data[5957c1368225f446c84dde9b][email]:[email protected]
data[5957c1368225f446c84dde9b][__v]:0

Я пытаюсь получить значение _id из запроса DELETE 5957c1368225f446c84dde9b

Я пытаюсь понять, как получить доступ к этому значению, не зная его в первую очередь, поскольку это значение на самом деле является идентификатором документа, который нужно удалить из монго.

Если я упорядочу req.query, вот что я получу

{"action":"remove","data":{"5957c3e07c5c3c150c10f5cb":{"_id":"5957c3e0
7c5c3c150c10f5cb","updatedAt":"2017-07-01T15:46:40.635Z","createdAt":"2017-
07-01T15:46:40.635Z","account":"[email protected]","name":"Breanna 
Ratke","number":
"(055) 304-7364 x20329","email":"[email protected]","__v":"0"}}}

Любые идеи?

Спасибо / Т


person Tony Aldo    schedule 01.07.2017    source источник


Ответы (2)


Я решил эту проблему, получив родительский ключ в возвращаемом объекте и запустив for in оттуда, чтобы добраться до нужных нам полей. Я обернул это в функцию, чтобы мы могли запросить возвращаемый объект для любых полей (учетная запись, _id и т. д.).

var res = {"action":"remove","data":{"5957c3e07c5c3c150c10f5cb":{"_id":"5957c3e07c5c3c150c10f5cb","updatedAt":"2017-07-01T15:46:40.635Z","createdAt":"2017-07-01T15:46:40.635Z","account":"[email protected]","name":"Breanna Ratke","number":
"(055) 304-7364 x20329","email":"[email protected]","__v":"0"}}}

function getValueFromObj(desiredField) {
  for (var data in res.data) {
    for (var k in res.data[data]) { // res.data[data] is the "data" object
      if (k === desiredField && res.data[data].hasOwnProperty(k)) {
        return res.data[data][k];
      }
    }
  }
}

console.log(getValueFromObj('_id'));     // 5957c3e07c5c3c150c10f5cb
console.log(getValueFromObj('account')); // [email protected]

person Andy Hoffman    schedule 01.07.2017

Большое спасибо, Энди. Это также сработало для меня:

Object.getOwnPropertyNames(req.body["data"]).toString();
person Tony Aldo    schedule 08.07.2017