Tengo un servidor express con Typescript Mysql que también usa Prisma Js para ORM. Estos son mis esquemas:
model Post { id Int @id @default(autoincrement()) title String @db.VarChar(35) description String @db.VarChar(250) category CategoriesOnPosts[] author User @relation(fields: [userId], references: [id]) userId String createdAt DateTime @default(now()) updatedAt DateTime @updatedAt } model Category { id Int @id @default(autoincrement()) name String @unique @db.VarChar(18) about String @db.VarChar(60) posts CategoriesOnPosts[] } model CategoriesOnPosts { post Post @relation(fields: [postId], references: [id]) postId Int category Category @relation(fields: [categoryId], references: [id]) categoryId Int @@id([postId, categoryId]) }primero creo una nueva categoría, luego crearé una nueva publicación, pero no puedo resolver este problema, ¿alguien puede ayudarme? también aquí está mi petición:
export const createCategory = async (req: Request, res: Response) => { try { const { name, about } = req.body; if (!name || !about) return res.status(400).json({ error: 'Please fill all inputs!' }); const existCategory = await prisma.category.findUnique({ where: { name } }); if (existCategory) return res.status(400).json({ error: 'This category already exists!' }); const category = await prisma.category.create({ data: { name, about, }, }); res.status(201).json(category); } catch (error) { res.status(500).json({ error: error.message }); } };pero cuando trato de crear una nueva publicación, no puedo ver ninguna categoría en el modelo CategoriesOnPosts
He eliminado Usuario de su esquema para simplificar el ejemplo
datasource mysql { provider = "mysql" url = env("DATABASE_URL") } generator client { provider = "prisma-client-js" } model Post { id Int @id @default(autoincrement()) title String description String category CategoriesOnPosts[] createdAt DateTime @default(now()) updatedAt DateTime @updatedAt } model Category { id Int @id @default(autoincrement()) name String @unique about String posts CategoriesOnPosts[] } model CategoriesOnPosts { post Post @relation(fields: [postId], references: [id]) postId Int category Category @relation(fields: [categoryId], references: [id]) categoryId Int @@id([postId, categoryId]) }Después de haber ejecutado la migración, he ejecutado el siguiente código:
const { PrismaClient } = require('@prisma/client') const prisma = new PrismaClient() const loadData = async () => { const category = await prisma.category.create({ data: { name: 'Category 1', about: 'Description 1', }, }); console.log(category); const post = await prisma.post.create({ data: { title: 'Post 1', description: 'Description 1', category: { create: { category: { connect: { id: category.id } } } } }, }); console.log(post); }; loadData()Y todo funciona correctamente, aquí les dejo una imagen con el resultado