2015-11-26 28 views
4

我想要在模型中需要我的模型。我相信我的需求路徑是正確的,因爲在我的需求中沒有錯誤,但是當我保存一個新實例時,似乎不會觸發我的模型。我在這裏錯過了什麼?在另一個模型中需要不同文件中貓鼬的模型模式

role.js

module.exports = function() { 
    var mongoose = require('mongoose'), 
     Schema = mongoose.Schema; 

    var role = new Schema({ 
     type: String, 
     level: Number, 
    }); 

    role.pre("save",function(next) { 
     this.type = 'member'; 
     this.level = 0; 

     next(); 
    }); 

    return mongoose.model('Role', role); 
} 

user.js的

module.exports = function (connection) { 
    var mongoose = require('mongoose'); 
     Role = require('./role.js'), 
     Schema = mongoose.Schema; 

    var user = new mongoose.Schema({ 
     first_name: String, 
     last_name: String, 
     email: String, 
     password: String, 
     profile_image: String, 
     company_name: String, 
     type: [{ type : String, default: 'Local' }], 
     created_at: { type : Date, default: Date.now }, 
     created_by: { type: Schema.Types.ObjectId, ref: 'User' }, 
     role: [Role] 
    }); 

    return connection.model('User', user); 
} 

回答

7

你可以從一個模型實例中的底層架構的直接訪問如下:

module.exports = function (connection) { 
    var mongoose = require('mongoose'), 
     Role = require('./role.js'), 
     RoleSchema = mongoose.model('Role').schema, 
     Schema = mongoose.Schema; 

    var user = new mongoose.Schema({ 
     first_name: String, 
     last_name: String, 
     email: String, 
     password: String, 
     profile_image: String, 
     company_name: String, 
     type: [{ type : String, default: 'Local' }], 
     created_at: { type : Date, default: Date.now }, 
     created_by: { type: Schema.Types.ObjectId, ref: 'User' }, 
     role: [RoleSchema] 
    }); 

    return mongoose.model('User', user); 
} 
+1

我完全忘記了使用mongoose.model('Role')。架構來訪問Schema。謝謝!它現在有效。 –