2011-08-21 43 views
0

我使用的RestMVC.js模块轮流使用Mongoose进行模型声明。比方说,我有一个模型声明了几个文件,其中一些使用这些类的成员变量ALA:RestMVC.js(Mongoose)&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,不允许单实例成员。 –