2014-05-12 40 views
0

我是Express的初學者。我在路由器/控制器中有以下代碼來更新模型。一方面,我不想修改「create_date」參數的日期,而另一方面,這段代碼返回錯誤。更新/放入錯誤保存在Express和Mongoose中

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); 
    }); 
}; 

這裏是我的架構:

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。控制檯返回以下響應:

  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' 

我該怎麼辦?任何人都知道我的錯誤在哪裏?謝謝。

+0

找到findById是否正在安裝'food'。 – Foreever

+0

@但是,它正在工作,它通過id響應了我選擇的'食物'的json。 – JesusMurF

+0

您嘗試僅更新例如一個字段。帶有一些測試值的描述。檢查這是否工作。 – Foreever

回答

0

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

+0

是的,錯誤是在Food.save(...)而不是Food.save(...)謝謝:) 但我能做些什麼不能修改'creation_date'? – JesusMurF

相關問題