Vladddosss
@Vladddosss

Prisma seeder если поле unique выдаёт ошибку — Unique constraint failed on the (not available), как исправить, автоматизировать?

Добрый день.

В доке prisma плохой пример, там показано ручное заполнение данных, а если делать через цикл для генерации больших данных с faker-ом, то там где поля уникальны выдаёт ошибку и сеялка останавливается сделав порой пару циклов.

Кто знает, это исправить, автоматизировать?
Можно ли стандартными методами или нужно костыли делать?

Пример кода.
const createProducts = async (quantity: number) => {
  faker.setLocale('ru');

  const products: Product[] = [];

  for (let i = 0; i < quantity; i++) {
    const productName = faker.commerce.productName();
    const categoryName = faker.commerce.department();

    const product = await prisma.product.create({
      data: {
        title: productName,
        slug: slugify(productName, { locale: 'ru', lower: true }),
        description: faker.commerce.productDescription(),
        price: +faker.commerce.price(350, 9900, 0),
        images: Array.from({
          length: faker.datatype.number({ min: 2, max: 7 }),
        }).map(() => faker.image.imageUrl()),

        category: {
          create: {
            title: categoryName,
            slug: slugify(categoryName, { locale: 'ru', lower: true }),
          },
        },
        reviews: {
          create: [
            {
              rating: faker.datatype.number({ min: 1, max: 5 }),
              text: faker.lorem.paragraph(),
              user: {
                connect: { id: 1 },
              },
            },
            {
              rating: faker.datatype.number({ min: 1, max: 5 }),
              text: faker.lorem.paragraph(),
              user: {
                connect: { id: 1 },
              },
            },
          ],
        },
      },
    });

    products.push(product);
  }

  console.log(`Создано ${products.length} продуктов.`);
};
  • Вопрос задан
  • 68 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы