我用两种方式制作了自定义方法,但没有工作。
模型
...
// I read it from other stack overflow QA
categorySchema.methods.postChange = function(){
console.log('postChange');
};
// Mongoose reference doc
categorySchema.methods('postChange', function(){
console.log('postChange');
});
var Category = mongoose.model('category',categorySchema);
module.exports = Category;
路由
...
router.post('/update_cat', upload.single('image_file'), function(req, res){
Category.findOneAndUpdate({name: req.body.name}, {href: req.body.href}, function(err, doc){
doc.href = req.body.href;
Category.postChange();
(err)?res.json(err):res.redirect('./reg_line');
});
});
并且错误是'Category.postChange不是函数'。
答案 0 :(得分:2)
不建议将您的功能放在模型中,但您应该在路径中定义它们。模型适用于您的mongoose模式。以防万一,您收到此错误是因为您没有导出该功能。
exports.categorySchema.methods.postChange = function(){
console.log('postChange');
};
或
exports.categorySchema.methods('postChange', function(){
console.log('postChange');
});
答案 1 :(得分:0)
您可以使用以下代码将该功能设置为 static :
// Mongoose reference doc
categorySchema.statics.postChange = function(){
console.log('postChange');
};
module.exports = mongoose.model('category',categorySchema);