2015-01-28 2 views
1

при вызове статического метода мангуста я получаю эту ошибку и я искал эту ошибку, но до сих пор не могу найти соответствующие решения для решения егоMongoose статики Тип ошибка: нет такого метода

TypeError: Object function model(doc, fields, skipId) { 
if (!(this instanceof model)) 
    return new model(doc, fields, skipId); 
Model.call(this, doc, fields, skipId); 
} has no method 'returnEventType' 

Модели:

var mongoose = require('mongoose'), 
Schema = mongoose.Schema; 

var portalSchema = new Schema({ 
    created: { 
     type: Date, 
     default: Date.now() 
    } 
}), 
eventType = new Schema({ 
    ID: { 
     type: Schema.Types.ObjectId, 
     ref: 'docevents' 
    }, 
    Accepted: { 
     type: Boolean, 
     default: 0 
    } 
}); 

var Portal = mongoose.model('Portal', portalSchema), 
EVENT = Portal.discriminator('EVENT', eventType); 

portalSchema.statics.returnEventType = function(cb) { 
cb(EVENT); 
}; 

контроллер:

exports.sendInvite = function(req,res) { 

Portal.returnEventType(function(Event){ 
     var EventObj = new Event({'ID': req.user._id}); 
     EventObj.save(function(err,eventObj) { 

     console.log(eventObj); 
     }); 

} 

ответ

2

Вы не можете добавлять статические методы к вашей модели после того, как она создается, так что двигайтесь определение returnEventType перед вызовом model:

portalSchema.statics.returnEventType = function(cb) { 
    cb(EVENT); 
}; 

var Portal = mongoose.model('Portal', portalSchema); 
+0

Большое спасибо это было действительно полезно :) –

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