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?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions