无法将属性添加到json对象
我试图添加状态到成功更新的响应,但我无法将状态属性添加到窗体的json对象。 这是我的代码
apiRouter.post('/forms/update', function(req, res){ if(req.body.id !== 'undefined' && req.body.id){ var condition = {'_id':req.body.id}; Form.findOneAndUpdate(condition, req.body, {upsert:true}, function(err, form){ if (err) return res.send(500, { error: err }); var objForm = form; objForm.status = "saved successfully"; return res.send(objForm); }); }else{ res.send("Requires form id"); } });
这是我得到的回应,通知状态丢失
{ "_id": "5580ab2045d6866f0e95da5f", "test": "myname", "data": "{\"name\":3321112,\"sdfsd\"344}", "__v": 0, "id": "5580ab2045d6866f0e95da5f" }
我不知道我错过了什么。
尝试以.toObject()
的forms:
Form.findOneAndUpdate(condition, req.body, {upsert:true}, function(err, form){ if (err) return res.send(500, { error: err }); var objForm = form.toObject(); objForm.status = "saved successfully"; return res.send(objForm); });
mongoose的查询结果是不可扩展的(对象被冻结或密封),所以你不能添加更多的属性。 为了避免这种情况,您需要创build对象的副本并对其进行操作:
var objectForm = Object.create(form); objectForm.status = 'ok';
尝试将res.send(objForm)
更改为res.send(JSON.stringify(objForm))
。 我怀疑Mongoose模型有一个自定义的toJson函数,所以当你返回它时,它正在以某种方式转换响应。
希望上面的帮助。
只需创build一个容器。
array = {}; Model.findOneAndUpdate(condition, function(err, docs){ array = docs; array[0].someField ="Other"; });
- 在ExpressJS中将路由parameter passing给控制器
- 使用Express进行多个API调用的静态variables
- 快速:错误传递res.json作为参数
- 无法从支持Socket.IO的cookie中获取快速会话ID
- node.js express – MIMEtypeswoff字体以文本/纯文本types返回
- 我如何在express模板目录的根目录下包含/扩展一个jade文件?
- multer,multiparty和connect-multiparty + Nodejs之间的区别
- 在Express 4和express-generator的/ bin / www中使用socket.io
- 通过express获取错误:发送后无法设置标题