body-parser按索引解析

时间:2017-07-01 17:03:33

标签: node.js express query-string body-parser

在前端使用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]:test@gmail.com
data[5957c1368225f446c84dde9b][name]:Beryl Welch
data[5957c1368225f446c84dde9b][number]:074-882-4899 x241
data[5957c1368225f446c84dde9b][email]:Naomi.Lemke@yahoo.com
data[5957c1368225f446c84dde9b][__v]:0

我想从DELETE请求中获取值_id 5957c1368225f446c84dde9b

我试图弄清楚如何在不知道它的情况下首先访问此值,因为此值实际上是要从mongo中删除的文档的ID

如果我将req.query字符串化,这就是我得到的

{"action":"remove","data":{"5957c3e07c5c3c150c10f5cb":{"_id":"5957c3e0
7c5c3c150c10f5cb","updatedAt":"2017-07-01T15:46:40.635Z","createdAt":"2017-
07-01T15:46:40.635Z","account":"test@gmail.com","name":"Breanna 
Ratke","number":
"(055) 304-7364 x20329","email":"Mathilde.Moore51@hotmail.com","__v":"0"}}}

有什么想法吗?

由于 / T

2 个答案:

答案 0 :(得分:1)

我通过在返回对象中获取父键并从那里运行for in来到达我们想要的字段来解决这个问题。我将它包装在一个函数中,以便我们可以查询返回对象的任何字段(account,_id等)。

var res = {"action":"remove","data":{"5957c3e07c5c3c150c10f5cb":{"_id":"5957c3e07c5c3c150c10f5cb","updatedAt":"2017-07-01T15:46:40.635Z","createdAt":"2017-07-01T15:46:40.635Z","account":"test@gmail.com","name":"Breanna Ratke","number":
"(055) 304-7364 x20329","email":"Mathilde.Moore51@hotmail.com","__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')); // test@gmail.com

答案 1 :(得分:0)

非常感谢安迪。 这对我也有用:

Object.getOwnPropertyNames(req.body["data"]).toString();