我正在开发一个项目,其中有三个 Mongoose 模式:文章、模块和课程。模块模式有一个文章数组,课程模式有一个模块数组,每个模块都有一个序列字段来确定顺序。我想确保序列字段在其各自的数组中是唯一的。但是,我在强制序列字段的唯一性方面遇到了困难。此给定代码不适用于此用例。
const articleSchema = new Schema({
// ... (article schema fields)
});
const moduleSchema = new Schema({
// ... (module schema fields)
articles: [{
article: {
type: Schema.Types.ObjectId,
ref: 'Article',
},
sequence: {
type: Number,
required: true,
unique: true, // This doesn't seem to be working
}
}],
});
const courseSchema = new Schema({
// ... (course schema fields)
modules: [{
module: {
type: Schema.Types.ObjectId,
ref: 'Module',
},
sequence: {
type: Number,
required: true,
unique: true, // This also doesn't seem to be working
},
}],
// ... (more course schema fields)
});
const Article = mongoose.model('Article', articleSchema);
const Module = model('Module', moduleSchema);
const Course = model('Course', courseSchema);
const articleSchema = new Schema({
// ... (article schema fields)
});
const moduleSchema = new Schema({
// ... (module schema fields)
articles: [{
article: {
type: Schema.Types.ObjectId,
ref: 'article',
},
sequence: {
type: Number,
required: true,
}
}],
});
moduleSchema.index({ 'articles.sequence': 1 }, { unique: true, sparse: true });
const courseSchema = new Schema({
// ... (course schema fields)
modules: [{
module: {
type: Schema.Types.ObjectId,
ref: 'module',
},
sequence: {
type: Number,
required: true,
},
}],
});
courseSchema.index({ 'modules.sequence': 1 }, { unique: true, sparse: true });