0

모델 선언을 위해 Mongoose를 차례로 사용하는 RestMVC.js 모듈을 사용하고 있습니다. 이 전 모델 선언과 몇 개의 파일이 있다고 가정 해 봅시다, 그들 중 몇은 멤버 변수 알라에 대한 이러한 클래스를 사용RestMVC.js (몽구스) & Node.JS - 외부 모델 파일

// Foo.js file 
module.exports.Foo = function(mongoose) 
{ 
    var Schema = mongoose.Schema; 

    var Foo = mongoose.model('Foo', new Schema({ 
    TestMember: String, 
    SecondTestMember: Date 
    })); 

    return mongoose.model('Foo'); 
}; 

// Bar.js file 
module.exports.Bar = function(mongoose) 
{ 
    var Schema = mongoose.Schema; 

    var Bar = mongoose.model('Bar', new Schema({ 
    DerivedMember: Foo, 
    Blah: String 
    })); 

    return mongoose.model('Bar'); 
}; 

다른에서 하나 개의 모델을 참조하는 올바른 방법은 무엇입니까? 나는 require ('models/Foo.js')와 exports.Foo와 mongoose.exports.Foo를 사용하려고 시도했지만 아무 쓸모가 없다.

+0

한 가지 방법은 모든 스키마를로드 미리하는 것입니다,하지만 저장하고 그들에 액세스 할 수있는 가장 좋은 장소는 무엇인가? 나는 세계의 공간을 오염시키고 싶지 않다. 아마 몽구스 일 것이다. 배열, 누구? –

답변

1

가장 좋은 방법은

var ASchema = new Schema({ 
     BObj: {type: ObjectID, ref: 'B'}, 
     Amount: Number, 
     Timestamp: Date 
     }); 
0

require("models/Foo.js").Foo

그냥 작동해야

+0

흠, 아마도 최신 버전에서는 문제가 아니지만 v0.4를 사용하고 있습니다 ... –

+0

분명히이 http://rawberg.com/blog/nodejs/mongoose-orm-nested-models/ 회담 .schema 특성을 사용하지만 모든 모델과 스키마를 동일한 파일에서 선언해야 함을 의미합니다. http://mongoosejs.com/docs/embedded-documents.html은 Bar에서 DerivedMember : [Foo]로 멤버를 선언하면 작동하지만 배열이며 하나의 객체 만 필요합니다 –

+0

https : // github에 따르면 .com/LearnBoost/mongoose/issues/188, 단일 인스턴스 멤버는 허용되지 않습니다. –