更新所有在Mongoose中没有相同名称的字段

时间:2018-01-25 23:51:59

标签: mongodb express mongoose

我尝试根据req.body更新Document中的所有字段。

在这种情况下,Schema未在Mongoose中定义。所以,我可以自由填写帖子中的内容

例如,我在文件中列出了这样的方案:

架构1:

{
 "name": {
  "type": "text",
  "value": "Afdallah"
 },
 "item": {
  "type": "text",
  "value": "Books"
 }
}

另一个是这样的

架构2:

{
 "name": {
  "type": "text",
  "value": "Afdallah"
 },
 "email": {
  "type": "email",
  "value": "afdallah.war@gmail.com"
 }
}

我的问题是,当他们没有相同的字段名称时如何更新所有字段?

我尝试这样更新字段。

const output = await Order.findOne({ _id: req.params.id });
try {
  output.set(req.body);
  await output.save();
  res.send("Success Update");
} catch (err) {
  res.status(422).send(err);
} 

1 个答案:

答案 0 :(得分:1)

我知道,您可以利用Object.assign复制当前数据,并将其与即将推出的req.body数据合并。

const newData = Object.assign({}, output, req.body);

output = newData;