从mongoose模式调用自定义方法

时间:2016-07-27 04:51:07

标签: node.js mongodb mongoose

我用两种方式制作了自定义方法,但没有工作。

模型

...
// 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不是函数'。

2 个答案:

答案 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);

文档: http://mongoosejs.com/docs/guide.html#statics