从nodejs中从mongodb获取的结果中检索对象属性

时间:2018-03-15 08:01:34

标签: json node.js mongodb express mongoose

我正在尝试检索对象属性数组,但我无法检索对象中除_id之外的任何属性。但我可以一次检索整个数组,甚至可以检索数组中的单个对象,但不能检索每个对象中的属性。

这是JSON结构

[{
   "_id": "5a82df96f2730d4bb177ffe1",
   "project_id": 123,
   "project_name": "proj11",
   "tasks": [],
   "links": [],
   "__v": 0,
   "upsert": true
}]

这个代码

taskDelay(req,res) {
    ProjectMaster.find({ "project_id": 123 })
    .then(response => {
        var result = response[0];
        var resultId = response[0]._id;
        var resultName = response[0].project_name;
        var resultProjId = response[0].project_id;
        console.log(result);           // outputs the object
        console.log(resultId);         // outputs 5a82df96f2730d4bb177ffe1
        console.log(resultName);       // undefined
        console.log(resultProjId);     // undefined
        res.status(200).send(response)
    })
    .catch(error => res
        .status(400)
        .send(error));
}

显示其他属性的未定义的原因可能是什么?

1 个答案:

答案 0 :(得分:0)

最后,我找到了解决这个问题的方法。它是以数据格式mongodb发送的响应。我试着做JSON.parse,但它没有用。 toObject()成功了。

taskDelay(req,res) {
ProjectMaster.find({ "project_id": 123 })
.then(response => {
    var result = response[0];
    var resultId = response[0]._id;
    var resultName = response[0].toObject().project_name;
    var resultProjId = response[0].toObject().project_id;
    console.log(result);           // outputs the object
    console.log(resultId);         // outputs 5a82df96f2730d4bb177ffe1
    console.log(resultName);       // outputs 123
    console.log(resultProjId);     // outputs proj11
    res.status(200).send(response)
})
.catch(error => res
    .status(400)
    .send(error));
}

我做错了不完全阅读mongoose文件!此行为与mongoose数据格式有关。