gpt4 book ai didi

node.js - MongoDB:如何使用一个模式作为不同文件中定义的不同集合的子文档

转载 作者:IT老高 更新时间:2023-10-28 13:25:14 26 4
gpt4 key购买 nike

我有这个架构:

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,并从 File 1File 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 i.e.
// 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);

现在您保存集合和子文档。

var FirstCollection = require('./FirstCollection')

var feat = new FirstCollection({
name: 'foo',
parameters: [{
id: 'bar',
value: 'foobar'
}]
});

feat.save(function(err) {
console.log('Feature Saved');
})

关于node.js - MongoDB:如何使用一个模式作为不同文件中定义的不同集合的子文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24126985/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com