es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

TypeORM-seeding se ejecuta pero no se agregan nuevas entradas.

Estoy intentando agregar algunos datos a mi base de datos usando typeorm-seeding. Al ejecutar seed:run, pasa y dice que ejecuta mis seeds, sin embargo, no se añaden nuevas entradas en la base de datos. Las rutas a mis seeds son correctas, ¿alguna sugerencia de qué podría estar mal? 🙂

Tengo el siguiente archivo básico .env

<h1>Configuración de la Base de Datos</h1>

IDEA<em>DB</em>HOST=localhost
IDEA<em>DB</em>PORT=5432
IDEA<em>DB</em>USER=postgres
IDEA<em>DB</em>PASS=postgres
IDEA<em>DB</em>NAME=idea_db
<code>
y el siguiente `ormconfig.js`
</code>javascript
const path = require('path'); // eslint-disable-line

module.exports = {
  host: process.env.IDEA<em>DB</em>HOST,
  username: process.env.IDEA<em>DB</em>USER,
  password: process.env.IDEA<em>DB</em>PASS,
  port: process.env.IDEA<em>DB</em>PORT,
  name: process.env.IDEA<em>DB</em>NAME,
  seeds: ['src/database/seeds/<em>.ts'],
  factories: ['src/database/factories/</em>.ts'],
  type: 'postgres',
  entities: ['src/<em>*/entities/</em>.entity{.ts,.js}'],
  synchronize: true,
  logging: false,
};

<code>
Mi seed es muy básico
</code>javascript
import { Factory, Seeder } from 'typeorm-seeding';
import { Connection } from 'typeorm';
import {
  Exercise,
  ExerciseType,
} from '../../exercises/entities/exercise.entity';

export default class CreateExercises implements Seeder {
  public async run(factory: Factory, connection: Connection): Promise<any> {
    await connection
      .createQueryBuilder()
      .insert()
      .into(Exercise)
      .values([
        {
          id: 1,
          createdAt: new Date(),
          updatedAt: new Date(),
          content: 'some demo content',
          solution: 'some demo content',
          labels: ['Winter'],
          exerciseType: ExerciseType.MATHE,
          skills: ['skill 1'],
          minDifficulty: 1,
          maxDifficulty: 2,
          verified: true,
          authorId: '65ca2dd2-6649-11ec-90d6-0242ac120003',
        },
      ])
      .execute();
  }
}
<code>
Y obtengo la siguiente salida cuando ejecuto seed:run
</code>
$ ts-node ./node_modules/typeorm-seeding/dist/cli.js seed
🌱  Tipo de ORM Seeding v1.6.1
√ Configuración de ORM cargada
√ Factories importadas
√ Seeders importados
√ Conexión a la base de datos establecida
√ Seeder CreateExercises ejecutado
👍  Seeding Finalizado
Hecho en 4.58 segundos.
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Según la información que proporcionaste, parece que todo está configurado correctamente y la semilla debería estar agregando datos a tu base de datos.

    Un posible problema podría ser que la propiedad synchronize en tu archivo ormconfig.js esté configurada como true. Esto significa que TypeORM intentará sincronizar automáticamente tus entidades con el esquema de tu base de datos, lo cual podría causar conflictos con los datos que estás intentando sembrar. Intenta establecer synchronize como false y volver a ejecutar la semilla.

    Otra posibilidad es que haya un error ocurriendo dentro de la semilla misma que esté impidiendo que se agreguen datos a la base de datos. Intenta agregar algunos registros de consola o declaraciones de depuración dentro de la semilla para ver si se está produciendo algún error.

    Por último, asegúrate de ejecutar el comando seed:run desde el directorio correcto y de que las rutas de tus archivos sean correctas. Si no se encuentran las semillas, obviamente no se ejecutarán.

Comments are closed.