更新/把错误保存在快递和猫鼬

Update/Put error save in Express and Mongoose

本文关键字:快递 存在 保存 错误 更新      更新时间:2023-09-26

我是初学者。我在路由器/控制器中有以下代码用于更新模型。一方面,我不想修改"create_date"参数的日期,另一方面,这段代码返回给我一个错误。

updateFood = function(req, res){
    Food.findById(req.params.id, function(err, food){
        food.food_name = req.body.food_name;
        food.description = req.body.description;
        food.image = req.body.image;
        food.create_date = Date.now();
        food.category = req.body.category;
        Food.save(function(err){
            if (!err){
                console.log("updated!");
            } else {
                console.log(err);
            }
        });
        res.send(food);
    });
};

下面是我的schema:

var food = new Schema({
    food_name: {type: String, unique: true},
    description: String,
    image: String,
    create_date: {type: Date, default: Date.now()},
    category: {
        type: String,
        cats: ['Meat', 'Fish', 'Vegetables']
    }
});
module.exports = mongoose.model('Food', food);

当我尝试用PUT更新Postman的食物时。控制台返回以下响应:

            Food.save(function(err){
                 ^
TypeError: Object function model(doc, fields, skipId) {
    if (!(this instanceof model))
      return new model(doc, fields, skipId);
    Model.call(this, doc, fields, skipId);
  } has no method 'save'

我能做什么?有人知道我错在哪里吗?谢谢。

我相信你的意思是food.save(..);而不是Food.save(..);,但如果你所做的只是更新模型,你可以使用findByIdAndUpdate()代替。