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

Как и другие платформы Node.js, Nest.js предоставляет комплексный набор инструментов для создания надежных и масштабируемых серверных сервисов. Тем не менее, важно понимать, как реализовать создание, чтение, обновление и удаление. (CRUD) операции в Nest.js эффективно — это самые фундаментальные операции в разработке API.

Узнайте, как создать Nest.js CRUD REST API с использованием TypeORM и базы данных PostgreSQL.

Начало работы с Nest.js

Для начала установите инструмент командной строки Nest.js:

npm i -g @nestjs/cli

Затем создайте новый проект, запустив:

гнездо новое crud-приложение

Инструмент CLI предложит вам выбрать менеджер пакетов, выберите вариант, который вы считаете наиболее предпочтительным. мы будем использовать npm, менеджер пакетов Node..

CLI создаст базовый проект Nest.js со всеми необходимыми файлами конфигурации и исходными зависимостями, необходимыми для запуска приложения.

instagram viewer

Наконец, перейдите в каталог проекта и запустите сервер разработки.

компакт-диск crud-приложение
запуск запуска нпм

Вы можете найти код этого проекта в его Гитхаб репозиторий.

Создайте базу данных PostgreSQL

В этом руководстве используется облачный экземпляр PostgreSQL, но вместо этого вы можете настроить локальную базу данных PostgreSQL. Ты можешь установить PostgreSQL в Windows, на macOS, или в Linux.

Чтобы настроить облачный экземпляр PostgreSQL:

  1. Направляйтесь к СлонSQL, зарегистрируйтесь и войдите на страницу обзора своей учетной записи.
  2. Нажмите на Создать новый экземпляр в верхней левой части страницы, чтобы создать новый экземпляр для вашего приложения.
  3. Введите название своего экземпляра, выберите бесплатный план и, наконец, выберите регион, чтобы завершить процесс установки.
  4. После создания экземпляра базы данных перейдите к настройки страницу и скопируйте предоставленный URL-адрес базы данных.

Настройка подключения к базе данных

В корневом каталоге вашего проекта создайте .env файл и вставьте URL-адрес подключения к базе данных следующим образом:

БАЗА_ДАННЫХ = ""

Теперь установите эти пакеты:

npm установить pg typeorm @nestjs/typeorm @nestjs/config

Затем создайте модуль базы данных с помощью инструмента CLI.

база данных модуля Nest g

Открой база данных/база данных.модуль.тс файл и добавьте следующий код конфигурации базы данных:

Импортировать {Модуль} от'@nestjs/общий';
Импортировать {Модуль конфигурации, служба конфигурации} от'@nestjs/config';
Импортировать { ТипОрмМодуле } от'@nestjs/типоформ';
Импортировать { Пользователь } от'../пользователи/модели/user.entity';

@Модуль({
импорт: [
TypeOrmModule.forRootAsync({
импортирует: [ConfigModule],
ввести: [ConfigService],

использованиеФабрика: асинхронный (служба конфигурации: служба конфигурации) => ({
тип: 'постгрес',
URL-адрес: configService.get('URL_БАЗА_ДАННЫХ'),
сущности: [Пользователь],
синхронизировать: истинный
}),
}),
],
})

экспортсорт Модуль базы данных {}

Этот модуль базы данных обрабатывает соединение, настраивая модуль TypeORM с обязательным параметром соединения, URL-адресом базы данных.

Кроме того, он определяет сущность User как часть конфигурации, определяющей структуру и свойства данных, хранящихся в таблице базы данных PostgreSQL.

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

Обновите файл app.module.ts

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

Импортировать {Модуль} от'@nestjs/общий';
Импортировать {Модуль конфигурации} от'@nestjs/config';
Импортировать {Контроллер приложений} от'./приложение.контроллер';
Импортировать { Служба приложений } от'./приложение.сервис';
Импортировать {модуль базы данных} от'./база данных/база данных.модуль';

@Модуль({
импорт: [
ConfigModule.forRoot({
envFilePath: '.env',
}),
модуль базы данных,
],

контроллеры: [AppController],
провайдеры: [AppService],
})

экспортсорт AppModule {}

Определите пользовательский модуль

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

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

пользователи модуля Nest g

Инструмент CLI автоматически обновляет app.module.ts файл для отражения внесенных изменений, в дополнение к созданию пользовательского модуля. Это гарантирует, что вновь созданный модуль, пользователи, будет правильно интегрирован в конфигурацию модуля приложения.

Создать пользовательскую сущность

TypeORM — это библиотека объектно-реляционного сопоставления (ORM), которая упрощает взаимодействие с базой данных в приложениях, использующих TypeScript, путем сопоставления объектов JavaScript с таблицами базы данных.

Создавая сущность пользователя с помощью TypeORM, вы определяете структуру и свойства пользовательских данных в базе данных PostgreSQL.

В каталоге пользователей создайте новый модели/user.entity.ts и добавьте следующий код.

Импортировать { Сущность, PrimaryGeneratedColumn, Столбец, } от"типоформа";

@Сущность()
экспортсорт Пользователь {
@PrimaryGeneratedColumn()
идентификатор: число;

@Столбец()
имя: нить;

@Столбец()
электронная почта: нить;
}

Пользователь сущность определяет структуру пользовательских данных, хранящихся в базе данных. В данном случае это идентификатор в качестве столбца первичного ключа, а имя и электронная почта столбцы и соответствующие им свойства.

Создайте службу API CRUD

Теперь создайте службу API, которая будет управлять логикой операций CRUD, выполнив следующую команду:

пользователи сервиса Nest G

Открой пользователь-auth.service.ts файл и добавьте этот код:

Импортировать { Инъекционный } от'@nestjs/общий';
Импортировать {ИнжектРепозиторий} от'@nestjs/типоформ';
Импортировать {Репозиторий} от'типоформа';
Импортировать {Пользователь} от'./модели/user.entity';

@Инъекционный()
экспортсорт UsersService {
конструктор(
@InjectRepository(Пользователь)
частный userRepository: Репозиторий,
) {}

асинхронный найти все(): Обещать {
возвращатьсяэтот.userRepository.find();
}

асинхронный findOne (идентификатор: число): Обещать {
возвращатьсяэтот.userRepository.findOne({где: {id}});
}

асинхронный создать (пользователь: Partial): Обещать {
константа новый пользователь = этот.userRepository.create (пользователь);
возвращатьсяэтот.userRepository.save (новый пользователь);
}

асинхронный обновление (идентификатор: число, пользователь: частично): Обещать {
Ждитеэтот.userRepository.update(id, пользователь);
возвращатьсяэтот.userRepository.findOne({где: {id}});
}

асинхронныйудалить(идентификатор: число): Обещать<пустота> {
Ждитеэтот.userRepository.delete (идентификатор);
}
}

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

Определить контроллер для API

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

пользователи контроллера Nest G

Затем добавьте приведенный ниже код в пользователи.controller.ts файл.

Импортировать {Контроллер, Получить, Поместить, Тело, Поместить, Параметр, Удалить, NotFoundException, HttpCode} от'@nestjs/общий';
Импортировать {Пользовательская служба} от'./users.service';
Импортировать { Пользователь } от'./модели/user.entity';

@контроллер('апи/пользователи')
экспортсорт UsersController {
конструктор(частный Только для чтения UsersService: UsersService) {}

@Получать()
асинхронный найти все(): Обещать {
возвращатьсяэтот.usersService.findAll();
}

@Почта()
@HttpCode(201)
асинхронный создавать(@Тело() пользователь: Пользователь): Обещать {
константа созданный пользователь = Ждитеэтот.usersService.create (пользователь);
возвращаться созданный пользователь;
}

@Помещать(':идентификатор')
асинхронный обновлять (@Парам('идентификатор') идентификатор: число, @Тело() пользователь: Пользователь): Обещать<любой> {
Ждитеэтот.usersService.update(id, пользователь);
возвращаться { сообщение: «Пользователь успешно обновлен» };
}

@Удалить(':идентификатор')
асинхронныйудалить(@Парам('идентификатор') идентификатор: число): Обещать<любой> {
константа пользователь = Ждитеэтот.usersService.findOne (идентификатор);

если (!пользователь) {
бросатьновый NotFoundException('Пользователь не существует!');
}

Ждитеэтот.usersService.delete (идентификатор);
возвращаться { сообщение: «Пользователь успешно удален» };
}
}

Контроллер управляет конечными точками API для пользовательских операций. Он обрабатывает запросы GET для извлечения всех пользователей, запросы POST для создания новых пользователей, запросы PUT для обновления существующих пользователей и запросы DELETE для удаления пользователей.

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

Обновите файл users.module.ts

Наконец, обновите пользователи.module.ts файл, как показано ниже, чтобы убедиться, что вы включили Объект пользователя и модуль TypeORM, который устанавливает соединение с базой данных.

Импортировать {Модуль} от'@nestjs/общий';
Импортировать {Контроллер пользователей} от'./пользователи.контроллер';
Импортировать {Пользовательская служба} от'./users.service';
Импортировать { ТипОрмМодуле } от'@nestjs/типоформ';
Импортировать { Пользователь } от'./модели/user.entity';

@Модуль({
импортирует: [TypeOrmModule.forFeature([Пользователь])],
контроллеры: [UsersController],
провайдеры: [UsersService]
})

экспортсорт UsersModule {}

Наконец, продолжайте и запустите сервер разработки, чтобы протестировать операции CRUD с помощью Postman.

запуск запуска нпм

Сервер запустится на порту 3000, и вы сможете отправлять ему API-запросы по адресу http://localhost: 3000/API/пользователи.

Создание серверных приложений с помощью Nest.js

Независимо от того, разрабатываете ли вы простой REST API или сложное веб-приложение, Nest.js предлагает полный набор функций и возможностей для создания надежной и надежной серверной системы.

Nest.js предлагает более структурированный подход к разработке проектов, чем Express.js. Это гарантирует, что вы сможете уверенно создавать, масштабировать и поддерживать сложные приложения благодаря организованному и модульному шаблону проектирования.