Javascript新对象字段未保存

时间:2016-03-06 16:04:54

标签: javascript node.js mongodb mongoose

我正在使用node.js和mongoose来获取基于查询的一些数据。 Mongoose函数 findOne 返回一个promise,它给了我一个javascript对象。我想为该对象添加一个新字段并为其赋值,然后应用stringify函数。如果我打印了我已经获得的字符串,即使我可以通过该对象访问它,我添加的新字段也不会被打印。

model.findOne({},function (err, names) {})
         .then(function(data){
                    response.writeHead(200, {"Content-Type": "application/json"});
                    data['status'] = 200;
                    data['message'] = 'OK';
                    response.write(JSON.stringify(data));
                    response.end();
                },
                function(err) {
                    response.writeHead(500, {"Content-Type": "application/json"});
                    var execError = '{"status":500,"message":"'+ err.toString() +'"}';
                    response.write(execError);
                    response.end();
                }
        );

1 个答案:

答案 0 :(得分:0)

我相信您使用的是 lean() 方法,这样您就可以在查询链中返回结果文档的纯JavaScript版本。它适用于Mongoose而不是创建完整的模型实例,然后您可以获得可以修改的完整JavaScript对象。因此,将您的查询链更改为:

var promise = model.findOne().lean();
promise.then(function(data){
        response.writeHead(200, {"Content-Type": "application/json"});
        data['status'] = 200;
        data['message'] = 'OK';
        response.write(JSON.stringify(data));
        response.end();
    },
    function(err) {
        response.writeHead(500, {"Content-Type": "application/json"});
        var execError = '{"status":500,"message":"'+ err.toString() +'"}';
        response.write(execError);
        response.end();
    }
);