第7章-使用ORM类库Mongoose提升你的Node.js数据-7.2.Mongoose的原型
2017-06-18 18:55
537 查看
原型是一个JSON格式的类,这个类包含一些关于文档的类型、属性等的信息。
如果需要,他也可以存储一些验证信息和默认值。他还可以包含一些业务逻辑以及其他重要的信息。
换句话说,原型可以作为文档的蓝图。模型创建的时候需要原型(即:原型被发布为模型)
所以在我们使用模型的属性前,需要先定义他们的原型,例如,book原型中定义了字符串类型的name属性。
注:Mongoose会忽略那些没有在模型的原型中定义的属性。
2、Number:标准的JavaScript/Node.js的数字类型,大至253(64位);更大的数字用mongoose-long(Git)
3、Boolean:标准的JavaScript/Node.js的布尔类型–真或假
4、Buffer:Node.js的二进制类型(图像、PDF、档案等)
5、Date:ISO的标准格式化日期类型,例如 2015-11-24T23:03:28.009Z
6、Array:标准的JavaScript/Node.js数组类型
7、Schema.Types.ObjectId:MongoDB中一个典型的24个字符,12字节的十六进制的数字字符串(例如:52dafa354bd71b30fa12c441)
8、Schema.Types.Mixed:任何类型的数据(即:灵活的类型)
注:Mongoose并不理会混合型对象的更改,所以在保存对象之前调用markModified()方法来确保混合部分的更改是连续的。
如果在insert或者save方法中忽略ObjectId,则会自动增加为一个基础的_id键,_id键可以用来对文档按时间顺序排序。
可以用过Schema.Types或者mongoose.Schema.Types来调取使用(例如:Schema.Types.Mixed)
我们可以非常灵活地定义文档原型,例如:
也可以创建和使用自定义的类型,如mongoose-types,其中涵盖了使用广泛的e-mail类型和URL类型的规则。
Mongoose的原型是可以自定义插件的,这意味着,通过创建插件,可以将某些功能扩展至当前应用的所有原型中。
为了更好地组织和复用代码,在原型中,我们可以创建静态方法和实例方法,开发插件,以及定义钩子等。
小贴士:在Node.js中进行验证,可以考虑使用validator.js和express-validator模块。
如果需要,他也可以存储一些验证信息和默认值。他还可以包含一些业务逻辑以及其他重要的信息。
换句话说,原型可以作为文档的蓝图。模型创建的时候需要原型(即:原型被发布为模型)
所以在我们使用模型的属性前,需要先定义他们的原型,例如,book原型中定义了字符串类型的name属性。
var bookSchema = mongoose.Schema({ name: String })
注:Mongoose会忽略那些没有在模型的原型中定义的属性。
一、Mongoose原型支持的数据类型
1、String:标准的JavaScript/Node.js的字符串类型(一个字符的序列)2、Number:标准的JavaScript/Node.js的数字类型,大至253(64位);更大的数字用mongoose-long(Git)
3、Boolean:标准的JavaScript/Node.js的布尔类型–真或假
4、Buffer:Node.js的二进制类型(图像、PDF、档案等)
5、Date:ISO的标准格式化日期类型,例如 2015-11-24T23:03:28.009Z
6、Array:标准的JavaScript/Node.js数组类型
7、Schema.Types.ObjectId:MongoDB中一个典型的24个字符,12字节的十六进制的数字字符串(例如:52dafa354bd71b30fa12c441)
8、Schema.Types.Mixed:任何类型的数据(即:灵活的类型)
注:Mongoose并不理会混合型对象的更改,所以在保存对象之前调用markModified()方法来确保混合部分的更改是连续的。
如果在insert或者save方法中忽略ObjectId,则会自动增加为一个基础的_id键,_id键可以用来对文档按时间顺序排序。
可以用过Schema.Types或者mongoose.Schema.Types来调取使用(例如:Schema.Types.Mixed)
我们可以非常灵活地定义文档原型,例如:
var ObjectId=mongoose.Schema.Types.ObjectId, Mixed = mongoose.Schema.Types.Mixed; var bookSchema = mongoose.Schema({ name: String, created_at: Date, updated_at: {type: Date, default: Date.now}, published: Boolean, authorId: {type: ObjectId, required: true}, description: {type: String, default: null}, active: {type: Boolean, default: false}, keywords: {type: [String], default: []}, description: {body: String, image: Buffer}, version: {type: Number, default: function(){return 1;}}, notes: Mixed, contributors: [ObjectId] });
也可以创建和使用自定义的类型,如mongoose-types,其中涵盖了使用广泛的e-mail类型和URL类型的规则。
Mongoose的原型是可以自定义插件的,这意味着,通过创建插件,可以将某些功能扩展至当前应用的所有原型中。
为了更好地组织和复用代码,在原型中,我们可以创建静态方法和实例方法,开发插件,以及定义钩子等。
小贴士:在Node.js中进行验证,可以考虑使用validator.js和express-validator模块。
相关文章推荐
- 第7章-使用ORM类库Mongoose提升你的Node.js数据-7.9.修改原型的行为
- 第7章-使用ORM类库Mongoose提升你的Node.js数据-7.4.自定义静态方法和实例方法
- 第7章-使用ORM类库Mongoose提升你的Node.js数据-7.10.Express.js+Mongoose=真正的MVC
- 第7章-使用ORM类库Mongoose提升你的Node.js数据-7.3.使用钩子保持代码的逻辑清晰
- 第7章-使用ORM类库Mongoose提升你的Node.js数据-7.7.嵌套的文档
- 第7章-使用ORM类库Mongoose提升你的Node.js数据-7.8.虚拟字段
- 第7章-使用ORM类库Mongoose提升你的Node.js数据-7.1.Mongoose的安装
- 第7章-使用ORM类库Mongoose提升你的Node.js数据-7.5.Mongoose模型
- 第7章-使用ORM类库Mongoose提升你的Node.js数据-7.6.使用population建立关系和连接
- Node.js项目实战-构建可扩展的Web应用(第一版): 7 使用ORM类库Mongoose提升你的Node.js数据
- 在node.js中,使用基于ORM架构的Sequelize,操作mysql数据库之增删改查
- Node.js的MongoDB驱动Mongoose基本使用教程
- node.js学习笔记(二)--使用mongoose简单的CRUD操作及测试模块mocha的使用
- node.js mongoose的安装和使用
- node.js开发之使用mongoose实现简单的CRUD
- 使用node.js的bodyParser中间件读取post数据解析
- 安装使用Mongoose配合Node.js操作MongoDB的基础教程
- nodejs+mongodb系列教程之(4/5)--mongoose使用
- 使用Node.js实现数据推送
- node.js开发之express4.0使用mongoose连接mongodb