我的设计中有FlashCardSchema和PackageSchema.一个闪存卡可以属于不同的包,一个包可以包含不同的闪存卡.

下面是我的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没有像预期的那样定义.我如何映射与mongoose 的多对多关系?

推荐答案

您的做法是正确的,但问题是您必须在flashcard模式中包含PackageSchema.js,反之亦然.否则,这些文件不知道您引用的是什么

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 ]
});

Node.js相关问答推荐

利用Gemini:通过Vertex AI还是通过Google/generative-ai?

如何在Reaction应用程序中查看存储的斑点图像?

"sh:/usr/local/bin/node:当它存在于文件目录中时未找到

填充函数在Node.js和MongoDB中不起作用

try 插入重复的邮箱时,mongoDB DuplicateKey 错误未定义

如何使用 Node.js 连接到 Cloud SQL?

图像存储在后端文件夹中,但使用 multer 和 react.js 在前端找不到

错误:找不到模块'C:\Users\nguye\AppData\Local\nodejs\node_modules\npm\bin\npm-cli.js'

使用 node/express/Multer,您如何首先判断参数?

在安装 tensorflow 时遇到问题

NodeJs 过滤掉目录异步

Web3.js 脚本在监听 CreatedPairs 时退出

Cassandra node.js 驱动程序有替代品吗?

如何在 Node.js 的 console.log() 中创建换行符

如何在客户端使用 node.js 模块系统

NODEJS 进程信息

密码的 Node.js 散列

__dirname 未在 Node 14 版本中定义

- configuration.output.path:提供的值public不是绝对路径!使用 Webpack

node.js 示例