[英]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.