MongoDB:如何将一个模式用作不同文件中定义的不同集合的子文档

我有这个Schema:

var ParameterSchema = new Schema({ id: { type: String, trim: true, default: '' }, value: { type: String, trim: true, default: '' } }); 

我想把它用作子文档,在两个或更多的集合中,这些集合在不同的文件中定义如下:

文件1

 var FirstCollectionSchema = new Schema({ name: { type: String, trim: true, default: '' }, parameters: [ParameterSchema] }); 

文件2

 var SecondCollectionSchema = new Schema({ description: { type: String, trim: true, default: '' }, parameters: [ParameterSchema] }); 

所以,问题是:我怎样才能在另一个文件中只定义一次ParameterSchema ,并从文件1文件2中使用它。

将参数子文档模式导出为模块。

 // Parameter Model file 'Parameter.js' var mongoose = require('mongoose'); var Schema = mongoose.Schema; var ParameterSchema = new Schema({ id: { type: String, trim: true, default: '' }, value: { type: String, trim: true, default: '' } }); module.exports = ParameterSchema; // Not as a mongoose model ie // module.exports = mongoose.model('Parameter', ParameterSchema); 

现在需要在父文档中导出的模块模式。

 // Require the model exported in the Parameter.js file var mongoose = require('mongoose'); var Schema = mongoose.Schema; var Parameter = require('./Parameter'); var FirstCollectionSchema = new Schema({ name: { type: String, trim: true, default: ' }, parameters: [Parameter] }); module.exports = mongoose.model('FirstCollection', FirstCollectionSchema); 

现在您保存collections和子文档。

 var FirstCollection = require('./FirstCollection') var feat = new FirstCollection({ name: 'foo', parameters: [{ id: 'bar', value: 'foobar' }] }); feat.save(function(err) { console.log('Feature Saved'); })