我有一个具有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)

07-23 05:53