2015-12-19 4 views
0

У меня есть три или четыре метода, которые одинаковы для трех моделей мангуста. Есть ли способ определить эти методы в одном файле и включить их?Как я могу поделиться кодом между двумя моделями в мангусте?

aSchema.methods.onTimeout = function() { 
    // same do stuff like in bSchema 
} 

bSchema.methods.onTimeout = function() { 
    // same do stuff like in aSchema 
} 

ответ

3

Это то, для чего предназначена функция плагина mongoose.

В timeout.plugin.js:

module.exports = exports = function(schema) { 
    schema.methods.onTimeout = function() { 
    console.log(this._id); 
    }; 
}; 

Затем вы можете использовать плагин в вашей схеме так:

var mongoose = require('mongoose'); 
var Schema = mongoose.Schema; 
var timeoutPlugin = require('./timeout.plugin'); 

var MySchema = new Schema({ 
    // fields here 
}, {}); 

MySchema.plugin(timeoutPlugin); 

Вы можете сделать это для любой схемы вы, в которой хочет иметь onTimeout доступно.

2

определяют общую функцию отдельно и присвоить им как

function onTimeout() { 
    // same do stuff like in both 
} 

aSchema.methods.onTimeout = onTimeout 

bSchema.methods.onTimeout = onTimeout 

Это может быть в отдельном файле

на timeout.js

module.exports = function onTimeout() { 
    // same do stuff like in both 
} 

a-schema.js

var onTimeout = require('./on-timeout.js'); 
aSchema.methods.onTimeout = onTimeout 
+0

спасибо, сэр .. –