操作数据库
数据库连接
步骤 1:安装 Mongoose
首先,我们需要安装 Mongoose,这是一个 MongoDB 对象数据建模(ODM)库,用于在 MongoDB 和 Node.js 应用程序代码之间无缝转换数据。
bash
pnpm add mongoose
1
步骤 2:创建数据库连接模块
接下来,我们将创建一个模块来管理数据库的连接。这个模块将负责建立与 MongoDB 的连接,并处理连接成功或失败的情况。
js
// 这个模块负责管理数据库的连接。
const mongoose = require("mongoose")
const {
MONGO_USERNAME,
MONGO_PASSWORD,
MONGO_HOST,
MONGO_PORT,
MONGO_DATABASE,
} = require("../env/index.js")
// 导出一个函数,用于连接数据库
module.exports = () => {
// 连接到 MongoDB 数据库
mongoose
.connect(
`mongodb://${MONGO_USERNAME}:${MONGO_PASSWORD}@${MONGO_HOST}:${MONGO_PORT}/${MONGO_DATABASE}`,
{
useNewUrlParser: true,
useUnifiedTopology: true,
}
)
.then(() => {
console.log("Connected to MongoDB successfully")
})
.catch((err) => {
console.error("Failed to connect to MongoDB:", err)
process.exit(1)
})
}
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
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
步骤 3:在应用中连接数据库
最后,我们将在应用启动时调用数据库连接函数,并启动 Koa 服务器。
js
const { APP_PORT } = require("./env/index.js")
const app = require("./app/index.js")
const MongoConnect = require("./db/index.js")
// 连接数据库
MongoConnect()
app.listen(APP_PORT, () => {
console.log(`Server is running at http://localhost:${APP_PORT}`)
})
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
创建模型对象
在 Mongoose 中,模型对象(Model)是一个 JavaScript 对象,它表示 MongoDB 中的一个集合(Collection),并且与特定的 MongoDB 集合相关联。模型对象定义了如何将数据映射到 MongoDB 的文档(Document)上,并且提供了一些方法来操作这些文档。
以下是如何定义和使用 Mongoose 模型对象的基本步骤:
步骤 1:定义模式(Schema)
在定义模型之前,我们首先需要定义一个模式(Schema),它描述了数据的结构和验证规则。
js
const mongoose = require("mongoose")
const Schema = mongoose.Schema
const userSchema = new Schema({
name: String,
age: Number,
gender: String,
hobby: String,
})
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
步骤 2:创建模型(Model)
使用定义好的模式来创建一个模型对象。
js
// 创建模型对象
const User = mongoose.model('User', userSchema);
// 抛出模型对象
module.exports = User
1
2
3
4
5
2
3
4
5
步骤 3:使用模型操作数据
一旦模型被创建,我们就可以使用它来创建、查询、更新和删除文档。
js
// 创建一个新的文档
const newUser = new User({
name: 'John Doe',
email: 'john.doe@example.com',
age: 30,
});
// 保存文档到数据库
newUser.save((err, savedUser) => {
if (err) return console.error(err);
console.log('User saved:', savedUser);
});
// 查询文档
User.find({ name: 'John Doe' }, (err, users) => {
if (err) return console.error(err);
console.log('Users found:', users);
});
// 更新文档
User.updateOne({ name: 'John Doe' }, { age: 31 }, (err, result) => {
if (err) return console.error(err);
console.log('User updated:', result);
});
// 删除文档
User.deleteOne({ name: 'John Doe' }, (err, result) => {
if (err) return console.error(err);
console.log('User deleted:', result);
});
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
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