Aut*_*cus 7 mongoose node.js express
我试图在成功更新时向响应添加状态,但我无法将状态属性添加到表单的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");
}
});
Run Code Online (Sandbox Code Playgroud)
这是我得到的回复,通知状态缺失
{
"_id": "5580ab2045d6866f0e95da5f",
"test": "myname",
"data": "{\"name\":3321112,\"sdfsd\"344}",
"__v": 0,
"id": "5580ab2045d6866f0e95da5f"
}
Run Code Online (Sandbox Code Playgroud)
我不确定我错过了什么.
DTi*_*ing 10
尝试.toObject()以下形式:
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);
});
Run Code Online (Sandbox Code Playgroud)
Mongoose查询结果不可扩展(对象被冻结或密封),因此您无法添加更多属性.为避免这种情况,您需要创建对象的副本并对其进行操作:
var objectForm = Object.create(form);
objectForm.status = 'ok';
Run Code Online (Sandbox Code Playgroud)
更新:我的答案是旧的,工作正常,但我将使用ES6语法相同
const objectForm = Object.create({}, form, { status: 'ok' });
使用spread运算符的另一种方法
const objectForm = { ...form, status: 'ok' }
| 归档时间: |
|
| 查看次数: |
2241 次 |
| 最近记录: |