如何使用 MONGOOSE 将 MongoDB 连接到 NODE.JS?

0 股票
0
0
0
0

介绍

MongoDB 是最流行的 NoSQL 数据库——它以集合的形式存储数据。集合中的各个记录称为文档,其键值结构类似于 JSON 数据。MongoDB 因其高性能、灵活性和可扩展性而备受青睐。.

什么是獴?

Mongoose 是一个基于 Promise 的对象数据建模 (ODM) 库,适用于 Node.js 框架。Mongoose 简化了您与 MongoDB 数据库的交互方式。它允许您创建和建模 MongoDB 模式,从而避免编写复杂的数据库查询/模式。Mongoose 使您能够对要存储在 MongoDB 中的数据进行建模。.
本指南将帮助您了解如何使用 Mongoose 将 MongoDB 连接到 Node.js。.

先决条件:

要遵循本指南,请确保您的计算机上已安装 Node.js。MongoDB 已安装在您的计算机上,或者已在 MongoDB Atlas 云帐户上设置。您需要具备创建 Node.js 服务器的基本知识。Postman 也已安装。设置 Node.js Mongoose 项目:要创建 Node.js 项目,请转到所需的文件夹并运行 `npm init -y`。然后安装以下软件包:Express — 用于创建 Node.js HTTP 服务器。Mongoose — 用于在 Node.js 中管理 MongoDB 的 ODM(对象交付模块)。.

npm install mongoose --save

在Node.js中使用Mongoose和MongoDB进行通信 要使用Mongoose与Mongoose通信,请创建一个名为db.js的文件,并按如下方式配置Mongoose连接:

导入 Mongoose 库:

const connectDB = async () => {
try {
const conn = await mongoose.connect(`mongodb://localhost:27017/test`, {
useNewUrlParser: true,
});
console.log(`MongoDB Connected: {conn.connection.host}`);
} catch (error) {
console.error(error.message);
process.exit(1);
}
}

这里使用的 MongoDB 运行在本地。因此,Mongoose 会创建一个连接到 `<database_name>`,其中 `<database_name>` 是您的数据库名称。请确保输入正确的 URI,该 URI 连接到您的本地 MongoDB 安装或 MongoDB Atlas cloud.mongodb://localhost:27017test。.

最后,导出 connectDB 函数:

module.exports = connectDB;

导入 db.js 文件:

const express = require('express');
const connectDB = require('./db'); 

添加 Express 中间件和解析器:

// express
const app = express();
//body parser
app.use(express.json());

运行 connectDB() 函数:

//connect to database
connectDB();

添加服务器根目录:

// routes
// We will add these routes later in this guide.

在本地主机端口上运行程序:

onst PORT = process.env.PORT || 5000;
app.listen(PORT, () => console.log(`Server running on port {PORT}`));

使用 Mongoose 对 Schema 进行建模

模型定义了 MongoDB 数据库中的集合模式。请按如下方式创建 model.js 文件和 Mongoose 集合模式:

const {
Schema,
model
} = require("mongoose");
const MySchema = new Schema({
name: {
type: String,
required: true,
maxlength: 50
},
createdAt: {
type: Date,
default: Date.now,
},
});
const TaskModel = model("test", MySchema)
module.exports = TaskModel

这里,我们创建一个名为 MySchema 的函数,它会执行 mongoose.Schema 方法。此方法用于设置 Mongoose 在 MongoDB 上运行的模式。要创建模式,请将文件添加到您的文档中。在本例中,我们添加两个字段:
名称 – 在上面的代码中,该字段被创建为一个长度不超过五十个字符的字符串。必填项设置为 true,表示每个文档都必须包含此字段。
createAt 字段——指定文档的创建时间。默认情况下,创建日期类型为当前日期。.

使用 Mongoose schema 向数据库添加数据:

要向数据库添加数据,请创建一个 controller.js 文件。.
从模型文件中导入 MySchema const Task = require('./model');
向任务集中添加任务。这将指定 POST 路径。.

exports.createTask = async (req, res) => {
try {
// get the task from the body
const taskData = await req.body;
//create a new task then save
await Task.create(taskData)
.then((createdTask) => {
if (!createdTask) return res.status(404)
.json({
success: false,
message: "Task creation failed",
error: "Unable get created task"
})
res.status(201)
.json({
success: true,
createdTask
})
})
.catch((error) => {
res.status(404)
.json({
success: false,
error: error.message
})
})
} catch (error) {
res.status(500)
.json({
success: false,
message: "Internal server error"
})
}
}

恢复所有任务:

将此代码添加到 controller.js 文件中。这将指定 GET 路由。.

exports.createTask = async (req, res) => {
try {
// get the task from the body
const taskData = await req.body;
//create a new task then save
await Task.create(taskData)
.then((createdTask) => {
if (!createdTask) return res.status(404)
.json({
success: false,
message: "Task creation failed",
error: "Unable get created task"
})
res.status(201)
.json({
success: true,
createdTask
})
})
.catch((error) => {
res.status(404)
.json({
success: false,
error: error.message
})
})
} catch (error) {
res.status(500)
.json({
success: false,
message: "Internal server error"
})
}
}
exports.getTasks = async (req, res) => {
//get all the data in the model and return it as response
try {
Task.find()
.then((allTasks) => {
res.status(200)
.json({
success: true,
allTasks
})
})
.catch((error) => {
res.status(404)
.json({
success: false,
message: "Cant fined ",
error
})
})
} catch (error) {
res.status(500)
.json({
success: false,
message: "Internal server error",
error: error.message
})
}
}

创建路由:

创建一条路由来运行上述控制器。创建一个名为 routes.js 的新文件,并添加以下代码:

const router = require("express")
.Router()
const controller = require('./controller')
router
.post('/', controller.createTask)
.get('/', controller.getTasks)
module.exports = router

最后,在 server.js 文件中运行这些路由。.

const router = require('./routes')
app.use('/tasks', router)

要添加新任务,请使用 Postman 发送 POST 请求,如下所示:

要检索已添加的任务,请使用 Postman 发送如下 GET 请求:

您可以通过访问 MongoDB 数据库来查看新增的任务:

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

您可能也喜欢