【mongoose】2.Schema和Model
mongoose
中提供了三种数据库: - Schema - Model -
Document
一般我们把Schema
叫做一个约束对象,里面定义约束的规则,Model
是数据库中对集合的一个映射。
我们来看一看下面的代码: 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35const mongoose = require('mongoose')
mongoose.connect('mongodb://localhost/test')
// Schema仅仅是一个约束配置对象
let stuSchema = new mongoose.Schema({
name: String,
age: Number,
gender: {
type: String,
default: "male"
},
address: String
})
// Model代表数据库中的一个集合
// 参数一:集合名(与数据库中的集合映射)
// 参数二:Schema 约束模式对象
const StudentModel = mongoose.model('student', stuSchema); // 创建完模型集合不会自动被创建
// mongoose会自动将集合名变成复数
// 需要插入文档才会自动创建
// StudentModel.create({}, function(err) => {})
StudentModel.create({
name: "Sy",
age: 15,
address: "XJUFE"
})
mongoose.connection.once("open", function() {
console.log("数据库连接成功");
})
定义了一个约束对象
stuSchema
,用的是mongoose.Schema({})
接口。1
2
3
4
5
6
7
8
9
10// Schema仅仅是一个约束配置对象
let stuSchema = new mongoose.Schema({
name: String,
age: Number,
gender: {
type: String,
default: "male"
},
address: String
})映射到
student
集合,并添加了约束规则。1
const StudentModel = mongoose.model('student', stuSchema); // 创建完模型集合不会自动被创建
这里需要注意,
student
在数据库中会自动被转为复数形式,如果是child
就会被转为children
,非常智能就对了。这个功能甚至有点智能地让人想笑。
- 默认情况数据库中可能还没有这个集合,通过模型来应用约束对象并创建一个文档可以看到这个集合。
1
2
3
4
5
6// StudentModel.create({})
StudentModel.create({
name: "Sy",
age: 15,
address: "XJUFE"
})
这段代码来自2018年的教程,现在来看显然有点老了。因为我查询了官方文档后得知,官方现在推荐并展示的创建文档的写法是面向对象式地
new
一个文档,例如下方这个代码示例:
1 | const student = new Student({ name: 'fluffy' }); |