【发布时间】:2014-05-12 23:16:01
【问题描述】:
我是 Express 的初学者。我的路由器/控制器中有以下代码用于更新模型。一方面我不想修改“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);
});
};
这是我的架构:
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' 来判断 findById 是否有效。
-
@Foreever 是的,它正在工作,它通过 id 响应带有我选择的“食物”的 json。
-
您尝试仅更新一个字段,例如。带有一些测试值的描述。检查这是否有效。
-
您不应该保存实例吗?所以应该是 food.save() 而不是 Food.save()
-
是的,错误出现在 Food.save(...) 而不是 Food.save(...) 上,谢谢 :) 但是不修改“creation_date”我该怎么办?跨度>
标签: javascript node.js mongodb express mongoose