2015-05-24 2 views
3

У меня есть общий метод, который мне нужно реализовать для всех моделей. Сейчас я делаю это для каждой модели:Mongoose - Как создать общий метод для всех моделей?

var Product = module.exports = mongoose.model('Product', ProductSchema); 

module.exports.flush = function (filename, cb) { 
    "use strict"; 

    var collection = require(filename); 

    // todo: reimplement with promises 
    this.remove({}, function (err) { 
    if (err) { 
     console.log(err); 
    } 
    else { 
     this.create(collection, cb); 
    } 
    }.bind(this)); 
}; 

Как добавить этот метод, чтобы он существовал для всех моделей?

ответ

3

Просто определите функцию Model:

var mongoose = require('mongoose'); 
mongoose.Model.flush = function (filename, cb) { 
    "use strict"; 

    var collection = require(filename); 

    // todo: reimplement with promises 
    this.remove({}, function (err) { 
    if (err) { 
     console.log(err); 
    } 
    else { 
     this.create(collection, cb); 
    } 
    }.bind(this)); 
}; 

Тогда все ваши созданные модели наследуют функции flush:

var Product = module.exports = mongoose.model('Product', ProductSchema); 
Product.flush(); 
+0

Так здорово так просто! Спасибо! – erGo

Смежные вопросы