您的位置:首页 > Web前端 > Node.js

第7章-使用ORM类库Mongoose提升你的Node.js数据-7.2.Mongoose的原型

2017-06-18 18:55 537 查看
原型是一个JSON格式的类,这个类包含一些关于文档的类型、属性等的信息。

如果需要,他也可以存储一些验证信息和默认值。他还可以包含一些业务逻辑以及其他重要的信息。

换句话说,原型可以作为文档的蓝图。模型创建的时候需要原型(即:原型被发布为模型)

所以在我们使用模型的属性前,需要先定义他们的原型,例如,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模块。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  node.js 数据库