猫鼬的多对多映射 [英] Many-to-many mapping with Mongoose
问题描述
我的设计中有FlashcardSchemas和PackageSchemas.一个抽认卡可以属于不同的软件包,而一个软件包可以包含不同的抽认卡.
I have FlashcardSchemas and PackageSchemas in my design. One flashcard can belong to different packages and a package can contain different flashcards.
在下面,您可以看到我的猫鼬模式定义的精简版本:
Below you can see a stripped down version of my mongoose schema definitions:
// 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);
从上面的注释中可以看到,这两个架构定义属于单独的文件,并且相互引用.
As you can see from the comments above, these two schema definitions belong to separate files and reference each other.
我得到一个异常,指出未按预期定义PackageSchema.我如何映射与猫鼬的多对多关系?
I get an exception stating that PackageSchema is not defined, as expected. How can I map a many-to-many relation with mongoose?
推荐答案
您的做法正确,但是问题是必须在flashcard-schema.js中包含PackageSchema,反之亦然.否则,这些文件不知道您要引用什么
You are doing it the right way, however the problem is that you have to include PackageSchema in the the flashcard-schema.js, and vice-versa. Otherwise these files have no idea what you are referencing
var Schema = mongoose.Schema,
ObjectId = Schema.ObjectId;
PackageSchema = require('./path/to/package-schema.js')
var FlashcardSchema = new Schema({
id : ObjectId,
type : { type: String, default: '' },
story : { type: String, default: '' },
packages : [ PackageSchema ]
});
这篇关于猫鼬的多对多映射的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!