Tengo la relación Muchos-a-Muchos explícita más básica:
model Category { id Int @id @default(autoincrement()) title String @db.VarChar(24) posts PostCategory[] } model Post { id Int @id @default(autoincrement()) title String @db.VarChar(24) categories PostCategory[] } model PostCategory { category Category @relation(fields: [categoryId], references: [id]) categoryId Int post Post @relation(fields: [postId], references: [id]) postId Int @@id([categoryId, postId]) @@unique([categoryId, postId]) }Lo que ahora trato de lograr es crear una nueva publicación con n categorías. Así que digamos que tenemos una matriz de cadenas con n cantidad de títulos de categoría:
const myStringArray = ["Category1", "Category2", "Category3", ...];¿Cómo puedo crear una consulta que los agregue a todos a mi nueva publicación creada? Si lo pongo en estático no hay problema, pero ¿cómo puedo manejar una lista donde no sé el tamaño?
const assignCategories = await prisma.post.create({ data: { title: 'First Post Title', categories: { create: [ { category: { create: { name: myStringArray[0], }, }, }, { category: { create: { name: myStringArray[1], }, }, }, ], }, }, })Puede usar Array.map() para mapear cada elemento de cadena en un objeto de la forma requerida
const myStringArray = ['Category1', 'Category2', 'Category3']; const assignCategories = await prisma.post.create({ data: { title: 'First Post Title', categories: { create: myStringArray.map((title) => ({ category: { create: { title } }, })), }, }, }); Array.map() documentos:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map