Базы данных NoSQL упрощают начало разработки вашего проекта или приложения с помощью базовых схем, а поскольку согласованность может быть нарушена с помощью этого типа базы данных, расширение становится легким по мере увеличения наших переменных и взаимодействий, и именно поэтому мы используем MongoDB в качестве нашего шлюза. Это также связано с тем, что приложение API (см. ссылку ниже о проекте, который мы создаем) будет содержать все окончательные данные о транзакциях или взаимодействиях (Postgres).
На всякий случай, если вы не понимаете, что мы разрабатываем, перейдите по ссылке ниже:
В предыдущем посте (Часть 1) мы смогли добавить в наш шлюз модули mongodb
и mongoose npm
. В этом посте мы сосредоточимся на создании схем коллекций, сохранении, извлечении, обновлении и удалении данных из наших коллекций баз данных.
Если вам интересно, что такое коллекции, вы можете связать их с таблицами или отношениями в базах данных SQL. Поскольку базы данных NoSQL не являются табличными базами данных, которые состоят из JSON-подобных типов документов баз данных, среди которых MongoDB является частью. Следовательно, записи (в базах данных SQL) или записи — это документы в NoSQL, а коллекция — это группа документов (записей). Я надеюсь, что это не сбивает с толку. Вы можете ознакомиться с более широкими пояснениями здесь Объяснение NoSQL, TechTarget и Базы данных NoSQL.
Мы рассмотрим вставку данных для базовой демонстрационной транзакции внутренней передачи (приложения), имеющей transaction_id
transaction_type
sender_account_id
recipient_account_id
amount
currency
transaction_note
, затем date_time
.
Во-первых, мы начнем с создания схемы, которая простыми словами представляет собой формат данных, которые должны быть сохранены в базе данных. Давайте продолжим и создадим файл модели transactionModel.ts
для наших данных транзакции и добавим следующий код.
Из кода видно, что требуются все входные данные, кроме примечания к транзакции, которое является необязательным. После определения схемы transactionSchema
мы создаем transactionModel
, как в строке 13, которая будет использоваться для поиска, сохранения и извлечения данных, связанных с транзакциями. Помните, что это основа, и мы добавим больше значений или переменных по мере продвижения.
Давайте продолжим и протестируем нашу модель, чтобы увидеть, можем ли мы сохранять и извлекать данные из базы данных. И для этого мы создадим 3 маршрута для сохранения и получения данных о транзакциях.
POST /api/transaction
Создать транзакциюGET /api/transaction/:id
Получить данные о транзакции для одной транзакцииGET /api/transactions
Получить все транзакции
Эта часть больше о базе данных, поэтому мы не будем углубляться в маршруты. На данный момент у нас может быть базовая маршрутизация для проверки нашей схемы. Для этого мы собираемся добавить модуль body-parser
, который поможет нам создать промежуточное ПО для преобразования данных наших запросов в формат JSON для хранения. Используйте приведенную ниже команду.
npm install body-parser --save
Теперь мы можем добавить приведенный ниже код в наш файл app.ts
.
const bodyParser = require('body-parser'); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: true }));
Итак, у нас есть app.ts
, выглядящий так
Затем мы создаем файл маршрута transactions
transactions.ts
в папке маршрутов. Наконец, мы добавляем к нему код ниже:
Вы можете запустить npm run start
для сборки и запуска нашего сервера.
Из приведенного выше кода сохраните транзакцию, созданную путем вызова функции mongoose start()
для полученных данных тела запроса, и это отправляет ответ клиенту, когда процесс сохранения успешен или нет. Смотрите скриншот ниже от почтальона.
Чтобы получить одну транзакцию, мы передаем параметр id
в маршрут, который используется для поиска транзакции, аналогичной transactionId
, которая была сгенерирована при создании транзакции. Смотрите скриншот ниже от почтальона.
Затем мы также можем запросить возврат всех транзакций, не передав аргумент в функцию find()
мангуста. Смотрите скриншот ниже от почтальона.
Неудачное действие будет выглядеть в почтальоне, как показано ниже.
Молодцы, что прошли весь этот путь, мы увидели, как мы будем взаимодействовать с нашей базой данных, и в других частях мы будем смотреть на модификации и удаление наших данных из базы данных.
Я хотел бы еще раз поблагодарить вас за то, что вы закончили этот пост, вы можете хлопать в ладоши или даже подписываться на меня, чтобы получать больше подобных сообщений, пока я прохожу свой путь по созданию платежного шлюза. Пожалуйста, будьте свободны, чтобы исправить меня, где я ошибся. Обучение — это путь к успеху.
Далее мы рассмотрим маршруты, промежуточное ПО и, надеюсь, контроллеры. Я стараюсь делать их как можно короче, чтобы не получить полный текст за один раз 🤩.
Если вы хотите увидеть готовый код (до этого этапа), вы можете получить его из репозитория по ссылке ниже.
До следующего поста 😎.