【发布时间】:2018-06-13 16:07:07
【问题描述】:
我一直在尝试使用添加的 req.body.whatever 数据更新 MongoDB。
当我将 req.body 数据获取到我的路线时,我可以看到它,更改它并更新到数据库就好了,但是当我在 req.body 中添加一个新元素时,如下所示:
req.body.newData = "this is new";
在路由中,它不会使用数据库文档中已经存在的其余现有(可更改)req.body 数据填充到 MongoDB 中。 我可以在代码中更改现有的 req.body.(KeyElement),并更新到数据库。一旦我尝试向 req.body 添加一个元素,新元素就不会更新。尝试了所有不同的更新、修改、replaceOne 等,可以获得可编辑的结果,但仍然没有新元素被添加到数据库中。我什至尝试了
Model.update(query, {$set: req.body}); etc
这似乎也更新了,但没有添加任何新内容。
这是我正在使用的路线...
router.post('/set-repair-info', ensureAuthenticatedAdmin, function(req, res) {
console.log('set-repair-info : ');
var ObjectId = require('mongodb').ObjectID;
var b = req.body;
console.log('body: ');
console.log(req.body);
var repairToUpdate = req.body.jid;
// console.log(repairToUpdate);
// console.log('req.body[uid]');
// console.log(req.body.jid);
// console.log('userid::: ' + req.body.userid);
// console.log('backuped : ' + req.body.backedup);
// console.log(req.body.username);
//buggy without this;
if (req.body.backedup=='false'){
req.body.backedup == '';
}
//CHECKS AND RESPONSES:
//by Edit
//PARTS ORDERED
if(req.body.repairstatus == 'Parts Ordered'){
req.body.partsordered = 'true'; //THIS WILL NOT GO INTO DB!
} else{
req.body.partsordered = null;
}
req.body.testthisout = "THIS IS A TEST"; //THIS WILL NOT GO INTO DB!
console.log("parts: " + req.body.partsordered);
// Job.replaceOne({ _id: ObjectId(req.body.jid)}, req.body , {upsert: true}, function (err, result) {
// (err === null) ? {msg: 'something happened... err edit user'} : {msg: err}
// });
console.log('body updated: ');
console.log(req.body);
req.body.repairstatus = "Waiting For Something Else"; // UPDATES FINE
Job.update({ _id: ObjectId(req.body.jid)}, { $set: req.body }, function (err, result) {
(err === null) ? {msg: 'something happened... err edit user'} : {msg: err}
});
req.flash('success_msg','Repair has successfully been edited and saved to the database.');
res.render('edit-repair', { job: {'data': req.body} });
});
【问题讨论】:
-
我必须注意,“这不更新”注释行是路由中创建的元素,并且在调用路由时不会传递。它们在路由中更新,可以在 req.body 的 console.log 中看到。我还检查了持有它的 Model.js Schema 并确保元素在那里。我可能需要重新创建!现在将对其进行测试并报告。
-
还是一样的结果。
-
您可以尝试关闭strict模式一段时间,看看是不是模型问题。
-
Mongoose Schema 中是否存在新字段?
-
现在工作。不在架构中,并且最后一次尝试添加和检查据说没有进入保存的文件。已保存,现在按预期工作。
标签: javascript node.js mongodb express mongoose