Mih*_*šič 1 mongoose mongodb node.js express
我有以下架构:
const wordSchema = mongoose.Schema({
author: {type: String, index: true, default: 'unknown'},
quote: String,
source: {type: String, default: 'unknown', index: true},
rating: {type: Number, default: 0},
createdAt: {type: Date, default: Date.now},
updatedAt: {type: Date, default: Date.now},
});
Run Code Online (Sandbox Code Playgroud)
以及我的快递应用中的以下PUT路线:
// Route to update a quote in the DB
app.put('/words/:id', function(req, res) {
const quote = new Word({
_id: req.params.id,
author: req.body.author,
quote: req.body.quote,
source: req.body.source,
rating: req.body.rating,
updatedAt: Date.now(),
});
Word.update(quote, function(err, raw) {
if (err) {
res.send(err);
}
res.send(raw);
});
});
Run Code Online (Sandbox Code Playgroud)
现在,当我发送PUT请求时,如果未提供使用默认值设置的参数,则将使用模式中的默认值填充它们.如何仅更新提供的值?
谢谢您的帮助.
不要Word为更新创建新实例,update需要条件和doc对象参数,以便单独标识要更新的文档并提供其更新的值:
app.put('/words/:id', function(req, res) {
const doc = {
author: req.body.author,
quote: req.body.quote,
source: req.body.source,
rating: req.body.rating,
updatedAt: Date.now(),
});
Word.update({_id: req.params.id}, doc, function(err, raw) {
if (err) {
res.send(err);
}
res.send(raw);
});
});
Run Code Online (Sandbox Code Playgroud)