Javascript 如何将mongoose子文档分割成不同的文件?
在Javascript 如何将mongoose子文档分割成不同的文件?,javascript,node.js,mongodb,mongoose,nosql,Javascript,Node.js,Mongodb,Mongoose,Nosql,在region.server.model.js中我想要 var RegionSchema = new Schema({ name: {type: String}, user: {type: Schema.ObjectId, ref: 'User'}, bases: [BaseSchema] }); mongoose.model('Region', RegionSchema); var BaseSchema = new Schema({ name: {type:
region.server.model.js中
我想要
var RegionSchema = new Schema({
name: {type: String},
user: {type: Schema.ObjectId, ref: 'User'},
bases: [BaseSchema]
});
mongoose.model('Region', RegionSchema);
var BaseSchema = new Schema({
name: {type: String},
region: {type: Schema.ObjectId, ref: 'Region'}
});
mongoose.model('Base', BaseSchema);
在另一个名为base.server.model.js的文件中,我想要
var RegionSchema = new Schema({
name: {type: String},
user: {type: Schema.ObjectId, ref: 'User'},
bases: [BaseSchema]
});
mongoose.model('Region', RegionSchema);
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中关联或链接这两个文件
谢谢大家! 这里的模型实际上是嵌入的,这意味着它是“Schema”对象,而不是嵌入到“Region”模型中的“model”。因此,当前多个文件的问题是,您需要“导出”该对象,然后在其他模块中“要求”该对象
典型的设置是这样的,略加删节,只调用文件base.js
:
var Schema = require('mongoose').Schema;
var BaseSchema = new Schema({
name: { type: String },
region: { type: Schema.ObjectId, ref: 'Region' }
});
module.exports = BaseSchema;
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);
当然,在另一个区域.js
:
var Schema = require('mongoose').Schema;
var BaseSchema = new Schema({
name: { type: String },
region: { type: Schema.ObjectId, ref: 'Region' }
});
module.exports = BaseSchema;
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);
其中,通过定义架构的路径“require”。这里要注意的是,由于这是“嵌入”的,因此不需要在这里为“基础”定义“模型”,因为这些项是在相同的“区域”集合中创建为“子文档”的
如果您确实希望在自己的集合中包含“基本”项的“引用”模式,则可以使用不同的定义:
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 );
至于“区域”:
不需要“require”,因为“model”暴露于mongoose对象
还要注意的是,虽然您“可以”稍后使用mongoose.model()
访问模型,但一般的良好做法是“导出”模型结果,以便您可以稍后在其他模块中“需要”并准备好一个对象来使用。您的模型实际上是嵌入的,这意味着它是“模式”对象,而不是“模型”这被嵌入到“区域”模型中。因此,当前多个文件的问题是,您需要“导出”该对象,然后在其他模块中“要求”该对象
典型的设置是这样的,略加删节,只调用文件base.js
:
var Schema = require('mongoose').Schema;
var BaseSchema = new Schema({
name: { type: String },
region: { type: Schema.ObjectId, ref: 'Region' }
});
module.exports = BaseSchema;
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);
当然,在另一个区域.js
:
var Schema = require('mongoose').Schema;
var BaseSchema = new Schema({
name: { type: String },
region: { type: Schema.ObjectId, ref: 'Region' }
});
module.exports = BaseSchema;
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);
其中,通过定义架构的路径“require”。这里要注意的是,由于这是“嵌入”的,因此不需要在这里为“基础”定义“模型”,因为这些项是在相同的“区域”集合中创建为“子文档”的
如果您确实希望在自己的集合中包含“基本”项的“引用”模式,则可以使用不同的定义:
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 );
至于“区域”:
不需要“require”,因为“model”暴露于mongoose对象
还需要注意的是,虽然您“可以”稍后使用mongoose.model()
访问模型,但一般的良好做法是“导出”模型结果,以便您可以稍后在其他模块中“要求”并准备好一个对象来使用。您可以通过访问mongoose模型的模式,因此您可以执行以下操作:
// 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);
您可以通过访问Mongoose模型的模式,因此可以执行以下操作:
// 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);