Skip to content

Deeply saving factory #209

@matiasgarcia

Description

@matiasgarcia

I have the following factories:

question.factory.ts

import Faker from '@faker-js/faker';
import { define, factory } from 'typeorm-seeding';
import { Answer } from '../../entities/answer.entity';
import { Question } from '../../entities/question.entity';

define(Question, (faker: typeof Faker) => {
  const question = new Question();
  question.question = faker.lorem.sentence() + '?';
  question.answers = factory(Answer)().makeMany(5) as any;
  question.private = faker.random.boolean();
  return question;
});

answer.factory.ts

import Faker from '@faker-js/faker';
import { define, factory } from 'typeorm-seeding';
import { Answer } from '../../entities/answer.entity';
import { User } from '../../entities/user.entity';

define(Answer, (faker: typeof Faker) => {
  const answer = new Answer();
  answer.answerer = factory(User)() as any;
  answer.answer = faker.lorem.sentence();
  return answer;
});

user.factory.ts

import Faker from '@faker-js/faker';
import { define } from 'typeorm-seeding';
import { User } from '../../entities/user.entity';

define(User, (faker: typeof Faker) => {
  const user = new User();
  const firstName = faker.name.firstName();
  const lastName = faker.name.lastName();
  user.name = `${firstName} ${lastName}`;
  return user;
});

And also I have a seed:

import { Factory, Seeder } from 'typeorm-seeding';
import { Connection } from 'typeorm';
import { Question } from '../../entities/question.entity';

export default class InitialDatabaseSeed implements Seeder {
  public async run(factory: Factory, connection: Connection): Promise<void> {
    const questions = await factory(Question)().createMany(15);
    console.log({ questions });
  }
}

When I run this, only the Questions records are stored, the Answers and User are ignored.

How can I persist them?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions