如何将数组作为参数传递给 Nexus?如何使用 Prisma 从这个数组创建多个对象?

问题描述

我正在努力学习如何同时使用 prisma 和 Nexus。我希望更有经验的人可以帮助我。

我想创建一个附有几张图片的帖子。

我的 prisma 模型如下所示:

model Post {
  id String @id @default(cuid())
  title String
  body String
  images Image[] @relation("ImagePost")
}

model Image {
  id String @id @default(cuid())
  post Post @relation("ImagePost",fields: [postId],references: [id])
  postId String
  name String
  url String
}

我需要编写一个可以接受带有标题、正文和图像 url 数组的帖子的 Nexus 突变。我需要为每个 url 创建一个 Image 记录,并将它们附加到帖子中。

const Mutation = objectType({
  name: 'Mutation',deFinition(t) {
    t.field('createPost',{
      type: 'Post',args: {
        title: nonNull(stringArg()),body: stringArg(),images: ????
      },resolve: (_,args,context: Context) => {
        return context.prisma.post.create({
          data: {
            title: args.title,body: args.body,images: ????
          },})
      },})
})

你能帮我弄清楚如何正确地做到这一点吗?

  1. 我不知道如何将一组 json 对象传递给 args。有 stringArg()intArg() 之类的东西,但您如何接受数组?
  2. 创建一堆 Image 对象并将它们附加到 Post 的正确方法是什么?我应该有一个 for 循环并一个一个地手动创建它们,然后以某种方式附加它们吗?或者有更好的方法吗?

你知道有没有人做这种事情的例子?

解决方法

就像 nonNull 一样,还有一个 list 类型。您可以使用它并在其中创建一个 arg

至于创建图像,您可以使用 create 并将图像数组传递给 post,如图 here