Skip to content

Deeply saving factory #209

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?

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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