我正在使用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();
}
);
答案 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();
}
);