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'); })