Создать модель
Создайте новую папку models
внутри папки backend
и создайте в ней новый файл с именем todoModel.js
. В этом файле я сделаю схему ресурсов todos.
const mongoose = require('mongoose'); const todoSchema = mongoose.Schema( { text: { type: String, required: [true, 'Please add a text value'], }, }, { timestamps: true, } ); module.exports = mongoose.model('Todo', todoSchema);
установив timestamps: true
, Mongoose автоматически создаст поля createdAt
и updatedAt
.
Добавить задачу
Сначала я обновлю вызов POST в файле todosController.js
.
const Todo = require('../models/todoModel'); const setTodo = asyncHanlder(async (req, res) => { if (!req.body.text) { res.status(400); throw new Error('Please add text field'); } const todo = await Todo.create({ text: req.body.text, }); res.status(200).json(todo); })
Я использую метод create
Mongoose и передаю текст из тела запроса и возвращаю точную задачу из базы данных.
На почтальоне это будет выглядеть так
Получить todo
В функции get todos я буду использовать метод find
Mongoose. Это добавит все todos. Позже я изменю его, чтобы получать задачи от конкретного пользователя.
const getTodos = asyncHanlder(async (req, res) => { const todos = await Todo.find(); res.status(200).json(todos) });
На почтальоне это будет отображаться так
Обновить список дел
В функции обновления задач я буду использовать метод findByIdAndUpdate
для обновления уже добавленной задачи.
const updateTodo = asyncHanlder(async (req, res) => { const todo = await Todo.findById(req.params.id); if (!todo) { res.status(400); throw new Error('Todo not found'); } const updatedTodo = await Todo.findByIdAndUpdate(req.params.id, req.body, { new: true, }); res.status(200).json(updatedTodo); })
и результат будет таким
Удалить задачу
Для удаления задачи я сначала получу задачу, найдя идентификатор, а затем использую метод remove
для ее удаления.
const deleteTodo = asyncHanlder(async (req, res) => { const todo = await Todo.findById(req.params.id); if (!todo) { res.status(400); throw new Error('Todo not found'); } await todo.remove(); res.status(200).json({ id: req.params.id }); })
На почтальоне это будет отображаться так
Вот как вы можете создавать свои API CRUD в MongoDB с помощью Mongoose и Express.
Спасибо за прочтение!
Не стесняйтесь подключаться к Twitter