[toc]
## pre
集合、Schema、模型 都是指同一个东东
## Schema(概要)
mongoDB中没有`表结构`,这意着每一条记录 (文档模型),都可以是完全不一样的数据结构
So,为了解决这个问题,**mongoose** 帮我们实现了一个名为`Schema`的东东
使用Schema,能帮助我们规范一个`collection` 里的 文档。
```
let UserSchema = new mongoose.Schema({
name:String
,age:Number
}
//如果你指定Schema的时候指定了collection的值,那么会使用这个值作为集合的名字
//,否则就是模型名转小写再转复数 User-user-users
,{collection:'user'}
);
```
- 如果对象中的字段在Schema中没有定义,则会被忽略掉
- 如果说对象中的字段少于Schema中定义的字段, 且少的那部分字段不是必须的,那么缺少的字段不会被保存(缺省,保存的JSON中不会存在这些个字段)
- 如果提供的字段类型和Schema中定义的不匹配,则会报错
定义好一个`Schema`后,**并不**会在数据库中立马创建一个collection,它并没有操作数据库的能力,只是规范了存放的文档的数据类型
## 模型
这个时候我们需要通过, `createConnection`返回的链接对象下的`.model`方法来创建一个**模型**,并将刚才定义的Schema骨架**注册***进去。
```
let User = connection.model('User', UserSchema);
```