ПОЛНЫЙ КОД :- ССЫЛКА
Узел. 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 используется для аутентификации.
ПОЛНЫЙ КОД :- ССЫЛКА
Это все спасибо за прочтение….
Продолжайте исследовать….
Продолжайте кодировать…..