操作数据库

Sy_ Lv6

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
35
const 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("数据库连接成功");
})

  1. 定义了一个约束对象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
})
  1. 映射到student集合,并添加了约束规则。
1
const StudentModel = mongoose.model('student', stuSchema); // 创建完模型集合不会自动被创建

这里需要注意,student在数据库中会自动被转为复数形式,如果是child就会被转为children,非常智能就对了。这个功能甚至有点智能地让人想笑。

  1. 默认情况数据库中可能还没有这个集合,通过模型来应用约束对象并创建一个文档可以看到这个集合。
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' });
  • 标题: 操作数据库
  • 作者: Sy_
  • 创建于 : 2025-06-15 00:51:35
  • 更新于 : 2025-06-15 00:51:35
  • 链接: https://shenying.online//demo/c1386z98/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论
目录
操作数据库