我在设计中使用了FlashcardSchemas和PackageSchemas。一个闪卡可以属于不同的包,一个包可以包含不同的闪卡。Mongoose多对多映射
下面你可以看到我的猫鼬模式定义一个精简版:
// package-schema.js
var Schema = mongoose.Schema,
ObjectId = Schema.ObjectId;
var PackageSchema = new Schema({
id : ObjectId,
title : { type: String, required: true },
flashcards : [ FlashcardSchema ]
});
var exports = module.exports = mongoose.model('Package', PackageSchema);
// flashcard-schema.js
var Schema = mongoose.Schema,
ObjectId = Schema.ObjectId;
var FlashcardSchema = new Schema({
id : ObjectId,
type : { type: String, default: '' },
story : { type: String, default: '' },
packages : [ PackageSchema ]
});
var exports = module.exports = mongoose.model('Flashcard', FlashcardSchema);
正如你可以从上面的注释中看到,这两个模式定义属于单独的文件和相互引用。
我得到一个异常,指出PackageSchema没有定义,符合市场预期。我怎样才能与猫鼬绘制多对多的关系?
有没有简单的方法来做到这一点 - 为什么你有软件包的闪卡模式的一部分,和闪卡的包模式的一部分?你期望运行哪些查询? – Alex
当我从数据库中取出一个包时,我想填充卡阵列,当我从数据库中取出一张卡时,我想查看卡所属的包。如果没有一个简单的方法来做到这一点,我应该使用第三个模式函数来存储这些关系吗? –