【发布时间】:2019-03-14 20:47:10
【问题描述】:
我正在使用带有 Angular 6 的 MEAN Stack 开发 Web 应用程序。如果用户之前已将数据添加到数据库中,则应更新数据。为此,我使用了findOneAndUpdate() 方法。 但在不更新现有数据的情况下,它会将另一个数据集发布到数据库中。
这是我的发帖路线。此“用户名”来自不同的架构。
router.post('/save', function(req, res) {
var mod = new rdaColor(req.body);
rdaColor.findOneAndUpdate(
{
userName: req.body.userName,
colorMovementBox: req.body.colorMovementBox
},
req.body,
{ upsert: true, new: true },
function(err, data) {
if (err) {
console.log(err);
res.send(err);
} else {
res.send(mod);
}
}
);
});
这是架构。
var mongoose = require('mongoose');
// Schema for rda color panel
var rdaColorSchema = new mongoose.Schema({
userName: {
type: String
},
colorMovementBox: {
type: String,
},
});
module.exports = mongoose.model('rdaColor', rdaColorSchema);
这是以下 console.log 的输出。
console.log("mod"+mod+" "+(req.body));
输出
mod{ _id: 5bbd68344619a612b07a688e,
userName: 'abc@yahoo.com',
colorMovementBox: 'rgb(49,64,116)',
} [object Object]
我怎样才能让它只更新数据。
【问题讨论】:
-
对不起,我是 MEAN Stack 的新手。我怎样才能删除那部分?
-
req.body的内容是什么?你能在问题中添加一个console.log吗 -
我添加了架构
-
@Akrion 用 console.log 的输出更新了问题
-
findOneAndUpdate()使用专门设计的更新文档进行部分更新操作。你需要的是findOneAndReplace()
标签: node.js mongodb mongoose mean-stack