[英]How can I separate mongoose subdocument into seperate files?
我想在region.server.model.js
中拥有
var RegionSchema = new Schema({
name: {type: String},
user: {type: Schema.ObjectId, ref: 'User'},
bases: [BaseSchema]
});
mongoose.model('Region', RegionSchema);
然后在另一个名为base.server.model.js
文件中
var BaseSchema = new Schema({
name: {type: String},
region: {type: Schema.ObjectId, ref: 'Region'}
});
mongoose.model('Base', BaseSchema);
它崩溃了
bases: [BaseSchema]
^
ReferenceError: BaseSchema is not defined
我无法弄清楚在mean.js中如何关联或链接这两个文件。
谢谢!
您的模型实际上是嵌入的,这意味着它是“架构”对象,而不是嵌入到“区域”模型中的“模型”。 因此,当前多个文件的问题在于,您需要“导出”该对象,然后将其“要求”用于其他模块。
典型的设置是这样的,略有删节,只是调用文件base.js
:
var Schema = require('mongoose').Schema;
var BaseSchema = new Schema({
name: { type: String },
region: { type: Schema.ObjectId, ref: 'Region' }
});
module.exports = BaseSchema;
然后当然是在另一个region.js
:
var mongoose = require('mongoose'),
Schema = mongoose.Schema,
BaseSchema = require('./base');
var RegionSchema = new Schema({
name: { type: String },
user: { type: Schema.ObjectId, ref: 'User' },
bases: [BaseSchema]
});
module.exports = mongoose.model('Region', RegionSchema);
通过定义架构的路径“需要”的位置。 在此注意,由于这是“嵌入的”,因此无需在此为“基础”定义“模型”,因为在相同的“区域”集合中将项目创建为“子文档”。
如果您实际上想要一个“引用的”架构,并在它们自己的集合中包含“基本”项,则可以进行不同的定义:
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
var BaseSchema = new Schema({
name: { type: String },
region: { type: Schema.ObjectId, ref: 'Region' }
});
module.exports = mongoose.model( 'Base', BaseSchema );
对于“区域”:
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
var RegionSchema = new Schema({
name: { type: String },
user: { type: Schema.ObjectId, ref: 'User' },
bases: [{ type: Schema.ObjectId, ref: 'Base' }]
});
module.exports = mongoose.model('Region', RegionSchema);
由于“模型”暴露于猫鼬对象,因此无需“要求”。
还请注意,虽然稍后您可以“使用” mongoose.model()
访问模型,但通常的良好做法是“导出”模型结果,以便稍后在其他模块中“需要”并准备好要使用的对象。
您可以通过Model#schema
访问Mongoose模型的Model#schema
,因此您可以执行以下操作:
// Ensure the base model is defined first.
require('./base.server.model.js');
var RegionSchema = new Schema({
name: {type: String},
user: {type: Schema.ObjectId, ref: 'User'},
bases: [mongoose.model('Base').schema]
});
mongoose.model('Region', RegionSchema);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.