TypeORM вставить основные основные данные (типы, статус, ..) после создания таблицы

#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