猫鼬的多对多映射 [英] Many-to-many mapping with Mongoose

查看:59
本文介绍了猫鼬的多对多映射的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的设计中有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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆