2015-06-29 4 views
0

Я хочу использовать статический метод из другой модели модели. Но когда я потребовать от другой модели и вызовите функцию:Mongoose требуется модель в модели

TypeError: Cannot read property 'isCalculated' of undefined 

так .. это не возможно требовать модели в другой модели? :(

Модели находятся в той же папке, поэтому я называю

var Confirmation = require("./confirmation").Confirmation; 

и экспорт в подтверждение:

module.exports = { 
Confirmation: mongoose.model('Confirmation', confirmationSchema) 
}; 

Спасибо :)

Update: Код: invoice.js

var mongoose = require('mongoose'); 
var Schema = mongoose.Schema; 
var autoIncrement = require('mongoose-auto-increment'); 
var Moment = 'Moment'; 
var moment = require('moment'); 
var Currency = mongoose.Types.Currency; 
var Confirmation = require("./confirmation.js"); 
autoIncrement.initialize(mongoose.connection); 

var invoiceSchema = new Schema({...}); //invoiceSchema 

invoiceSchema.statics.insert= function(invoice, cb) { 
.... 
Confirmation.isCalculated(..) //error here 
.... 
} 

module.exports = mongoose.model("Invoice", invoiceSchema); 

И код: confirmation.js

var mongoose = require('mongoose'); 
var Schema = mongoose.Schema; 
var Invoice = require("./invoice.js"); 

var confirmationSchema = new Schema({...}); 

confirmationSchema.statics.isCalculated = function(pid, aid, cb) {...}; 

module.exports = mongoose.model('Confirmation', confirmationSchema) 
+0

Можете ли вы показать, как/где вы объявляете 'метод isCalculated'? – robertklep

+0

в подтверждении: 'confirmSchema.statics.isCalculated = function (pid, aid, cb) {..})' – Gargamil

+0

Можете ли вы показать точный код? Если, например, вы добавляете этот статический метод _after_, вы создали модель, вы получите такую ​​ошибку. – robertklep

ответ

0

Моего предположения был бы, что из-за ваш круговой импорт (confirmation.js требует invoice.js, который требует confirmation.js ...), то Confirmation модели в вашем invoice.js не материализуется должным образом.

Я думаю, вы должны удалить круговой импорт в целом и динамически получить ссылку на «другую» модель с использованием mongoose.model(), например, так:

invoiceSchema.statics.insert = function(invoice, cb) { 
    .... 
    mongoose.model('Confirmation').isCalculated(..) 
    .... 
} 
+0

Вот и все! Большое спасибо :) – Gargamil

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

  • Нет связанных вопросов^_^