Javascript新对象字段未保存

我使用node.js和mongoose基于查询来获取一些数据。 Mongoose函数findOne返回一个承诺,它给了我一个JavaScript对象。 我想添加一个新的字段到该对象,并给它一个值,然后应用stringify函数。 如果我打印string,我添加的新字段将不会被打印,即使我可以通过对象访问它。

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一起使用,不会创build完整的模型实例,然后获得可以修改的完整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(); } );