Javascript新对象字段未保存
问题描述:
我使用node.js和mongoose来获取一些基于查询的数据。 Mongoose函数findOne返回一个承诺,它给了我一个javascript对象。我想为该对象添加一个新字段并为其赋值,然后应用stringify函数。如果我打印了字符串,我添加的新字段将不会被打印,即使我可以通过该对象访问它。Javascript新对象字段未保存
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();
}
);
答
我相信你是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();
}
);
它的工作原理。谢谢。 – Andrew