我有一个具有7个属性的模型,并且想要在前端有编辑请求时全部更新它们。是否有任何优雅的方法可以执行此操作,或者我必须像在代码波纹管中一样手动键入所有字符(顺便说一下,这对我来说很好用,但看起来确实很丑)。
exports.saveDish = (req, res, next) => {
const {
name,
description,
price,
category,
vegetarian,
hot,
menuPosition,
} = req.body;
Dish.findById(req.body._id)
.then(oldDish => {
if (oldDish) {
oldDish.name = name;
oldDish.description = description;
oldDish.price = price;
oldDish.category = category;
oldDish.vegetarian = vegetarian;
oldDish.hot = hot;
oldDish.menuPosition = menuPosition;
oldDish.save();
return res.status(204).json({ message: 'Dish data properly updated' });
}
const newDish = new Dish(req.body);
newDish.save();
return res.status(201).json({ message: 'New dish properly saved' });
})
.catch(err => console.log(err));
};
最佳答案
这将更新现有记录并返回更新的值。如果没有找到匹配的记录,它将向回调或Promise返回一个false值(不记得它是null
还是其他东西)。
Dish.findByIdAndUpdate(req.body._id, updates, {new: true}, cb)