2016-07-27 6 views
0

Ich habe benutzerdefinierte Methoden mit zwei Möglichkeiten, aber nicht funktioniert.Aufruf benutzerdefinierte Methode von Mungo Schema

Modelle

... 
// 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; 

Routen

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

und der Fehler 'Category.postChange ist keine Funktion'.

Antwort

1

Es ist nicht ratsam, Ihre Funktion in die Modelle aufzunehmen, aber Sie sollten sie in den Routen selbst definieren. Modelle sind für dein Mungo-Schema. Nur für den Fall, erhalten Sie diesen Fehler, weil Sie nicht die exportieren die Funktion sind.

exports.categorySchema.methods.postChange = function(){ 
    console.log('postChange'); 
}; 

oder

exports.categorySchema.methods('postChange', function(){ 
    console.log('postChange'); 
}); 
+0

Ist es unmöglich, mit dem Modell zu exportieren ? Weil ich es schon mache. –

+0

var Kategorie = mongoose.model ('Kategorie', KategorieSchema); –

+1

Sie müssen diese explizit exportieren, wenn Sie sie in den Routen verwenden möchten. Wenn Sie beispielsweise Ihr Schema "exportieren", heißt das nicht, dass Sie auch andere Funktionen der Datei exportieren. Wenn Sie mit 'node.js' vertraut sind, müssen Sie beobachtet haben, dass Sie entweder alle Ihre Funktionen in ein Klassenobjekt einfügen und diese exportieren oder explizit alle Funktionen exportieren. –

0

Sie die Funktion als statische mit diesem Code einstellen:

// Mongoose reference doc 
categorySchema.statics.postChange = function(){ 
    console.log('postChange'); 
}; 

module.exports = mongoose.model('category',categorySchema); 

Dokumentation:http://mongoosejs.com/docs/guide.html#statics