mongoose子文件在单独的文件上,如何embedded它们
我正在定义我的应用程序模型,并为每个我定义的模型有单独的文件,我的问题是,我需要创build一个使用子文档的模型,但是在另一个文件上,我如何使用该模式在我的模型上? 我的意思是我见过的所有例子在同一个文件中声明了Child模型和Parent,例如:
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] });
使用ref
var mongoose = require('mongoose'); var Schema = mongoose.Schema; var userSchema = new Schema({ _id : Schema.Types.ObjectId, username: String, sports : [{ type: Schema.Types.ObjectId, ref: 'Sport' }] }); module.exports = mongoose.model('User', userSchema);
顺便说一句,在ref
,你可以在查询时使用.populate('sports')
,mongoose会为你扩展这些types。
- 无法在Express应用程序中连接路线
- Node.js Express响应在Promiseparsing之前结束
- 如何从一个Node.js / Express应用程序中的Mongoose pre hook中查询?
- Node.js Express。 bodyParser的大身体
- 在Express.js中的res.send()之后退出
- 如何获得不更新会话的Express / Connect路由
- 如何使用Express和Node JS构build不区分大小写的REST API
- Mandrill:条件合并标记在呈现模板时不起作用
- Angular JS将base64数组发送到NodeJs服务器 – Allow-Access-Control-Origin