Как подключить MongoDB к NODE.JS с помощью MONGOOSE?

0 Акции
0
0
0
0

Введение

MongoDB — самая популярная NoSQL-база данных. MongoDB хранит данные в коллекциях. Отдельные записи в коллекции называются документами и имеют структуру «ключ-значение», аналогичную данным в формате JSON. MongoDB предпочтительнее благодаря своей производительности, гибкости и масштабируемости.

Что такое мангуст?

Mongoose — это библиотека объектного моделирования данных (ODM) на основе промисов для фреймворка Node.js. Mongoose упрощает взаимодействие с базой данных MongoDB. Она позволяет создавать и моделировать схемы MongoDB, избавляя от необходимости писать сложные запросы/схемы базы данных. Mongoose позволяет моделировать данные, которые вы хотите хранить в MongoDB.
Это руководство поможет вам понять, как подключить MongoDB к Node.js с помощью Mongoose.

Предварительное условие:

Чтобы следовать этому руководству, убедитесь, что на вашем компьютере установлен Node.js. Также необходимо установить MongoDB или настроить её в облачной учетной записи MongoDB Atlas. Требуются базовые знания по созданию серверов Node.js. Необходимо установить Postman. Настройка проекта Node.js Mongoose. Чтобы создать проект Node.js, перейдите в нужную папку и выполните команду `npm init -y`. Затем установите следующие пакеты: Express — для создания HTTP-сервера Node.js. Mongoose — ODM для MongoDB в Node.js.

npm install mongoose --save

Взаимодействие с Mongoose и MongoDB в Node.js. Для взаимодействия с 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 устанавливает соединение с базой данных, имя которой — это ваше имя. Убедитесь, что вы ввели правильный URI, который подключается к вашей локальной установке MongoDB или к облаку MongoDB Atlas: 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.

Модель определяет схему коллекции в базе данных 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. Чтобы создать схему, добавьте файлы в ваш документ. В данном случае мы добавляем два поля:
Имя — В приведенном выше коде это поле создается как строка с максимальной длиной в пятьдесят символов. Параметр Required установлен в значение true, чтобы указать, что каждый документ должен содержать это поле.
Поле createAt указывает время создания документа. По умолчанию в качестве типа даты создания используется текущая дата.

Добавьте данные в базу данных, используя схему Mongoose:

Для добавления данных в базу данных создайте файл 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)

Чтобы добавить новую задачу, отправьте POST-запрос с помощью Postman следующим образом:

Чтобы получить доступ к добавленным задачам, отправьте GET-запрос с помощью Postman следующим образом:

Добавить задачи можно, открыв свою базу данных MongoDB:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может понравиться