修改obj javascript中的项目

时间:2018-09-05 15:51:16

标签: javascript node.js express mongoose

我正在尝试修改obj中的一项(集合中查找的结果)

收藏

name: {},
date: {}

集合中的示例文档

[
    {name: "pedro", date: "2018/01/01"},
    {name: "juan", date: "2018/02/02"}
]

Nodejs,猫鼬

Collection.find().exec((err, result)=>{
    for(var i = result.length - 1; i >= 0; i--){
        result[i].date = "test";
    }
    res.send(result);
})

获取路线

[
    {name: "pedro", date: "2018/01/01"},
    {name: "juan", date: "2018/02/02"}
]

而不是我期望的

[
    {name: "pedro", date: "test"},
    {name: "juan", date: "test"}
]

我正在寻找一个新的obj数组,但是还有另一种方法吗?有什么建议吗?

谢谢

1 个答案:

答案 0 :(得分:2)

首先,您需要将猫鼬文档转换为对象。

Collection.find().exec((err, result)=>{
    result = result.map(doc => doc.toObject()); // add this
    for(var i = result.length - 1; i >= 0; i--){
        result[i].date = "test";
    }
    res.send(result);
})

还有另一个选择:您可以使用猫鼬lean()方法获取普通对象而不是文档。这种方法应该比第一种具有更好的性能。

以下是使用lean()的查询的简短示例

Collection.find().lean().exec((err, result)=>{ // notice lean() before exec
    for(var i = result.length - 1; i >= 0; i--){
        result[i].date = "test";
    }
    res.send(result);
})

详细了解lean()方法here