#typescript #nestjs #typeorm
#typescript #nestjs #typeorm
Вопрос:
У меня к вам вопрос. Я использую NestJS и TypeORM. Я пытаюсь вставить значения по умолчанию в таблицы после создания таблиц. Например, у меня есть таблица приоритетов, и мне нужно вставить высокие / Средние / низкие значения. Я перепробовал все из документации typeorm и NestJS, и я прочитал связанные с этим вопросы и ответы отсюда. Я еще не мог этого сделать.
import {getConnection} from "typeorm";
await getConnection()
.createQueryBuilder()
.insert()
.into(User)
.values([
{ firstName: "Timber", lastName: "Saw" },
{ firstName: "Phantom", lastName: "Lancer" }
])
.execute();
Я нашел приведенный выше код, и я думаю, что способ таков. Но я не смог найти, в каком файле я должен использовать этот фрагмент кода. Если вы мне поможете, я буду очень рад. Спасибо.
Ответ №1:
Вы можете использовать миграции, чтобы поддерживать свою базу данных в актуальном состоянии. Они могут использоваться не только для изменения таблиц, но и для добавления данных по умолчанию. У TypeORM есть механизм для этого.
Комментарии:
1. Спасибо за ваш ответ. В документации я не смог увидеть ни одного примера, подобного моему случаю. У вас есть рабочий образец? или это будет хорошая статья где-нибудь в Интернете.
2. Вот хорошее практическое руководство по использованию этой техники. Но есть нюанс. У QueryRunner нет методов для вставки данных в базу данных. Я нашел полезную закрытую проблему , в которой говорится, как получить доступ к QueryBuilder через ссылку на диспетчер сущностей.
Ответ №2:
Я использую миграции для этой цели. Мы можем написать статический запрос или мы также можем загрузить данные из CSV, а затем сохранить их в DB в цикле.
вы можете создать пустую миграцию с помощью npx typeorm migration:create -n InsertMasterDataInDB
и затем вы можете использовать приведенный ниже запрос для вставки данных
await queryRunner.manager.query(INSERT QUERY HERE IN SINGLE QUOTES);
и затем npx typeorm migration:run