ПОЛНЫЙ КОД :- ССЫЛКА

Узел. js (Node) — это кроссплатформенная среда выполнения с открытым исходным кодом для выполнения кода JavaScript. Node широко используется для серверного программирования, что позволяет разработчикам использовать JavaScript для клиентского и серверного кода без необходимости изучения дополнительного языка.

1. Создание сервера

Создание сервера со встроенным пакетом HTTP и использование метода createServer(): -

2. Обработка сервера

Чтобы сделать несколько типов запросов на обработку, мы должны создать несколько маршрутов, которые будут приземлять пользователя в соответствии с обращением к API.

3. Отправка HTML-файла в качестве ответа на обращение к API

Модуль файловой системы можно использовать для отображения любого HTML-файла при выполнении обращения к API либо по определенному маршруту, либо по всем маршрутам.

4. Использование Express

Выше мы создаем несколько маршрутов, используя if-else, что не очень хорошо, когда у нас есть 20–30 или более маршрутов, поэтому у нас есть экспресс, который помогает легко создавать маршруты.

5. Источник событий

Излучатель событий полезен, когда мы хотим, чтобы какое-то событие было выполнено, когда конкретный API срабатывает.

Пример из реальной жизни. Предположим, сделан запрос на получение всех моих предыдущих бронирований, тогда размещение кодов для получения данных из данных в маршруте не очень хорошо, поэтому вместо этого мы используем эмиттер событий. Итак, мы говорим, что когда это обращение к API будет выполнено, вызовите это событие.

Нам нужно импортировать пакет «events», чтобы использовать его «emit()», который будет иметь имя и данные события. если вы хотите работать с этими данными.

6. Маршруты

Создание нескольких маршрутов с экспресс-и « /* »заставит этот маршрут принимать все запросы.

7. Динамические маршруты

Маршруты, которые будут принимать некоторую информацию во время выполнения, а затем давать ответ в соответствии с ней. «res» имеют «params», содержащие эти данные.

8. Объединение маршрутов

9. Маршруты в другом файле

Согласно хорошему соглашению программирования, разные вещи должны находиться на своих местах. Поэтому мы должны переместить все маршруты в определенный файл и вызывать их оттуда.

10. Отправка файла HTML, когда маршруты находятся в другом файле

Модуль «путь» необходим для соединения двух местоположений локальных элементов.

11. Получение динамических данных в формате HTML и последующая отправка: -

Предположим, мы хотим принять некоторый ввод через HTML, который мы отображаем на предыдущем шаге. Для этого используйте концепцию PUG HTML FORMAT.

11.1. Создание файла

11.2. HTML-файл в формате PUG

11.3. Настройка сервера для использования PUG Engine

11.4. Отображение маршрутов с помощью мопса

Когда мы нажмем «/», мы получим «привет, Адитья», так как эти данные обрабатываются движком pug.

12. Интеграция с MongoDB :-

Шаг 1: – В VS Code → npm i mongodb
Шаг 2: – Загрузите MongoDB + MongoDB Shell
Шаг 3: — Скопируйте переменную пути bin из обоих и поместите в env → User → Путь

Шаг 4. В CMD напишите «mongosh» → Чтобы запустить оболочку в терминале.

12.1. Основные команды: -

показать БД; →Чтобы получить всю БД
, используйте db_name →
Чтобы открыть БД
показать коллекции →
Отображает всю коллекцию, присутствующую в текущей БД.
db.collection("имя_коллекции").find() →
Выдать все данные, присутствующие в открытой БД.

12.2. Настройте MongoDB в VSCode: -

12.2.1 . Создайте файл для работы с базой данных.

12.2.2. Настройка БД :-

Нам нужен клиент для взаимодействия с MongoDB, который будет работать по URL-адресу.

12.2.3. Импорт функции connection() в папку маршрутов и выполнение методов GET, POST:-

Выходные данные: – (ПОЧТАЛЬНИК)

A. GET → Получение всех книг из БД.

B. POST → Вставка книги в БД.

13. « Использование Body Parser » Динамическая вставка данных в БД с помощью POST :-

13.1. Установите пакет npm body-parser с помощью → npm i body-parser».

13.2. Инициализация в основном файле: -

13.3. Использование синтаксического анализатора в файле маршрутов: –

Выберите данные из тела запроса и поместите их в «книгу» коллекции.

Тело запроса почтальона будет выглядеть так: -

14. ПОЛУЧИТЬ по идентификатору: — с помощью «find()»

Получите идентификатор из параметров запроса, а затем с помощью метода find() найдите его.

15. ОБНОВЛЕНИЕ по идентификатору: – Использование «updateOne()»

Получите идентификатор из параметров запроса, а затем с помощью метода updateOne() обновите тело запроса, используя формат $set.

Чтобы увидеть формат, см.: - ССЫЛКА

16. УДАЛИТЬ по идентификатору: — с помощью «deleteOne()».

Получите идентификатор из параметров запроса, а затем с помощью метода deleteOne() удалите его.

Примечание. В приведенном выше коде почему мы ищем id по {_id : ObjectId(id)} ?

Это связано с тем, что в коллекции базы данных хранятся данные, имеющие уникальный формат идентификатора, записанные в том же формате:

17. Завершить код CRUD: — создать, прочитать, обновить, удалить.

18. Код статуса :- Ссылка

Cпрочитать → 200
Rпрочитать → 201
Update → 200
Delete → 204

Точно так же можно добавить все статусы.

19. В приведенных выше кодах у нас есть настройка соединения в файле route.js, но это не так, поэтому у нас есть концепция «КОНТРОЛЛЕРЫ»:-

19.1. Создание папки контроллера и файла bookController.js: –

19,2. Написание кода подключения к БД и других операций CRUD в файле bookController.js: -

19.3. Файл маршрута будет иметь только соответствующий контроллер, который обрабатывает эти задачи: -

20. Мангуст :-

20.1. Модель мангуста :-

Каждый раз в приведенном выше коде мы должны вызывать вещи db.connect() и db.collection(), поэтому нам нужно уменьшить их.

Mongoose → Помогает разработчику использовать драйвер объектной модели MongoDB.

Чтобы настроить соединение с БД, у нас есть два способа напрямую использовать метод → 1 или сначала определить его соединение () в db.js, а затем импортировать его, т. Е. Метод → 2.

Ссылка :- ССЫЛКА

Модель → структура, которая указывает компилятору принять определенный шаблон данных.

Создание папки модели и файла Book.js с моделью схемы книги: -

Модель книги показана ниже, а также имеет валидацию → тип данных с типом и обязательным. Если принимаемые данные не в формате модели, мы получаем сообщение об ошибке при обращении к API.

Контроллер Get, Update, Delete будет изменен: -

Но при создании или вставке данных нам нужно позаботиться о проверке данных, т. е. должны быть вставлены действительные данные.

20.2. Проверка Mongoose:- (Вставить → Опубликовать)

Если мы дадим, мы получим ошибку при обращении к POST API: -

21. Аутентификация с помощью Mongoose [MongoDB] и JWT: — Регистрация пользователя: —

21.1. Создание файла аутентификации в папке маршрута:-

21.2. В Auth.js создание маршрута POST, который будет обрабатываться AuthController, и создание пользователем регистрации в системе: -

21.3. Создание файла AuthController:-

21.4. AuthController.js будет иметь функцию signUp, которая будет принимать данные из тела запроса и сохранять их в БД. Но здесь нам также нужно создать модель пользователя, чтобы в БД были вставлены правильные действительные данные.

21,5. Модель пользователя :-

21,6. В файле User.js есть модель :-

21,7. Итак, мы создали модель, создали маршрут, создали контроллер, теперь нам нужно указать серверу приложений использовать этот контроллер при попадании по маршруту «/auth/signUp».

21,8. Результат обращения к API: -

На приведенном выше изображении данных мы видим, что «пароль» сохраняется без шифрования, что не очень хорошо, поэтому нам нужно зашифровать пароль. .

21,9. Для шифрования пароля используйте пакет «bcrypt:-

Ссылка :- ССЫЛКА

22. Вход пользователя:-

Теперь пользователю SignUp необходимо войти в систему: -

22.1. Создание маршрутов входа:-

22,2. В AuthController определение контроллера: -

Отметка 1 → Получение всех сведений о пользователе из БД с использованием адреса электронной почты, указанного в req.body. Если пользователь не найден, возвращается ошибка 404.

Отметка 2→ Если пользователь зарегистрирован в БД, но ввел неправильный пароль, то возвращается 401, здесь используется «compare()» bcrypt который сравнит входной пароль с зашифрованным паролем путем внутреннего шифрования входного пароля.

Отметка 3→ Если пользователь найден и пароль правильный, пользователь успешно вошел в систему.

войти

23. Токен доступа JWT:-
Некоторым конкретным пользователям необходимо иметь доступ к некоторым важным данным, например, владелец должен иметь доступ ко всей информации о пользователях, поэтому нам нужно создать некоторые защищенные маршруты, которые будут использоваться только авторизованным лицом.

Установите JWT: - npm i JSON Web Token

Ссылка :- ССЫЛКА

Состоит из трех вещей → Заголовок, Полезная нагрузка, Подпись.

23.1. Генерация токена:-

Создание токена пользователя, чтобы, когда мы хотим предоставить какому-либо пользователю доступ к защищенным данным, этот токен можно было использовать.

Вывод генерации токена при входе в систему: -

23,2. Создание защищенных маршрутов с помощью промежуточного программного обеспечения и токена:-

Что мы собираемся сделать здесь, так это то, что когда пользователь пытается получить доступ к некоторым защищенным данным, то есть ко всей пользовательской информации, нам нужно проверить, прошел ли этот пользователь аутентификацию для доступа к этой информации или нет. Это можно сделать с помощью промежуточного программного обеспечения, т. Е. Когда любой пользователь пытается получить доступ к этой информации, сначала будет выполнена проверка, а затем, если она действительна, будут доступны эти защищенные маршруты.

Промежуточное ПО: - ССЫЛКА

Промежуточное ПО

→ Промежуточное ПО выполняется после того, как сервер получит запрос и до того, как действия контроллера отправят ответ. Промежуточное ПО имеет доступ к объекту запроса, объекту ответов и, кроме того, оно может обработать запрос до того, как сервер отправит ответ.

23.2.1. Использование сгенерированного токена для аутентификации :-

A. Создание папки Middleware и файла в ней: -

B. При доступе к защищенному маршруту сначала вызывается промежуточное ПО: -

C. Подтверждение токена аутентификации пользователя «Ram» в токене носителя означает, что пользователь является «Ram», а затем ему разрешен доступ к защищенным маршрутам: -

D. Внутри файла authMiddleware.js: –

Извлечение токена из «req.headers», его проверка, если разрешен вызов
«next()» → означает переход к следующему вызову после промежуточного программного обеспечения,
в противном случае несанкционированный.

Поскольку пользователь проверен, и мы делаем запрос маршрута «/», получаем соответствующий вывод.

Таким образом, JWT используется для аутентификации.

ПОЛНЫЙ КОД :- ССЫЛКА

Это все спасибо за прочтение….

Продолжайте исследовать….
Продолжайте кодировать…..

Адитья Маурья