node.js - 单独文件上的 Mongoose 子文档,如何嵌入它们

标签 node.js mongodb express mongoose

我正在定义我的应用程序模型,并且我为我定义的每个模型都有单独的文件,我的问题是,我需要创建一个使用子文档的模型,但那是在另一个文件上,我怎么能在我的模型上使用该架构?我的意思是我见过的所有示例都在同一个文件中声明了子模型和父模型,例如:

var childSchema = new Schema({ name: 'string' });

var parentSchema = new Schema({
  children: [childSchema]
});

我有一个名为 user.js 的文件,它定义了用户模型:

var mongoose  = require('mongoose');
var Schema    = mongoose.Schema;

var userSchema = new Schema({

  _id           : Schema.Types.ObjectId,
  username      : String,

});


module.exports = mongoose.model( 'User', userSchema );

在另一个名为 sport.js 的文件中,我有另一个运动模型定义:

var mongoose  = require('mongoose');
var Schema    = mongoose.Schema;

var sportSchema = new Schema({

  _id       : Schema.Types.ObjectId,
  name      : String

});

module.exports = mongoose.model( 'Sport', sportSchema );

所以在我的用户模型上,我需要为用户将遵循的运动定义一个字段,但我不知道如何定义该子文档,因为运动定义在另一个文件中,我尝试了这个:

var mongoose  = require('mongoose');
var Schema    = mongoose.Schema;
var SportsModel = require('sport');

var userSchema = new Schema({

  _id           : Schema.Types.ObjectId,
  username      : String,
 sports         : [SportsModel]

});


module.exports = mongoose.model( 'User', userSchema );

但我不确定这是否是正确的方法,因为我要导出的是模型,而不是架构。

提前致谢,我想在单独的文件中定义每个模型以保持顺序。

最佳答案

您可以通过模型的 schema 属性访问模型的架构。所以这应该有效:

var userSchema = new Schema({    
  _id           : Schema.Types.ObjectId,
  username      : String,
  sports        : [SportsModel.schema]    
});

关于node.js - 单独文件上的 Mongoose 子文档,如何嵌入它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20501526/

相关文章:

node.js - NodeJs 架构有何不同?

javascript - 窗口标题未正确显示 - Electron

python - 如何为ReferenceField mongoengine创建索引

node.js - 自动转换 `_id` 为 `ObjectID`

MongoDB 找到最接近的匹配

javascript - Yeoman - 如何将快速服务器任务添加到由生成器 Angular 生成的 Gruntfile.js

javascript - 尽管设置了 header ,但 CORS 不起作用

javascript - 如何创建可重用的 Socket.IO 模块

node.js - 使用 TypeScript 扩展 Express Request 对象

javascript - 使用节点 js (express) 从 url 导入 json 文件