현재 내가 사용하는 위치에 따라 다른 파일에서 다른 모델을 정의하려고합니다. 그러나 그들 사이에는 관계가 있습니다. 그래서 나는 계속해서 하나를 가져오고, 다른 하나는 먼저. 예 :Mongoose Population을 사용하여 모델을 결합하는 방법
파일 '모델/users.js'
var mongoose = require('mongoose');
var db = mongoose.connection;
var UserSchema = mongoose.Schema({
// fields
companyId: {
type: String
}
});
var User = module.exports = mongoose.model('User', UserSchema);
module.exports.getUserById = function(id, callback){
User.findById(id, callback);
}
파일 '모델/company.js'
var mongoose = require('mongoose');
var db = mongoose.connection;
var CompanySchema = mongoose.Schema({
// fields
});
// module export and functions etc.
그래서 예에서 사용자 회사 ID는 하나의 ID는 회사. 그럼 내 경로에 나는, 사용자를 얻을, 두 모델을 가져올 회사 ID를 찾아 그 회사의 데이터를 가져올 수 있습니다 :
var Promise = require('bluebird');
var User = Promise.promisifyAll(require('../models/user'));
var Company = Promise.promisifyAll(require('../models/company'));
User.getUserByIdAsync()
.then(function(user){
return [user, Company.getCompanyByIdAsync(user.companyId)];
}).spread(function(user,company){
// Do stuff
}).catch(function(err)... etc });
내가 여기 몽구스의 문서에 인구에 대해 읽어 봤는데 : http://mongoosejs.com/docs/populate.html하지만의를 모든 것이 하나의 파일에 들어 있습니다. 다른 모델에 대한 호출이 오류를 던질 수 있도록 유지 보수성 (및 제 정신성)을 위해 모델을 별도로 유지하려고합니다.
모델에 참여하거나 다른 외부 모델을 참조 할 수있는 방법이 있습니까? 스키마도 맞습니까? ...
나는 익스프레스와 몽구스를 사용하고 있습니다. 수정은 아주 간단합니다,
var getUserWithPopulate = function (criteria, projection, options, callback) {
Models.Users.find(criteria, projection, options).populate([
{path: 'company', select:'companyId, companyName'}
]).exec(callback);
};
감사합니다 참고로