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

标签 graphql prisma prisma2 nexus-js

我正在尝试学习结合使用 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
}

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

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 所示。 .

关于graphql - 如何将数组作为参数传递给 Nexus?如何使用 Prisma 从这个数组创建多个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68030586/

相关文章:

graphql - 为什么 GraphQL 不接受这种标量参数类型,而是提示 "argument type must be Input Type but got: undefined"?

reactjs - 继电器 - 在查询之前设置变量

prisma - 生成迁移自述文件时,Prisma 从哪里获取我的名字?

postgresql - 如何在 Prisma 中播种关系

typescript - 将 Object<T> 转换为 Object<A>,其中 A 包含在 T 中

graphql - gatsby-source-contentful 不适用于 gatsby-transformer-remark

reactjs - 如何使用 React-Hooks 和 Apollo Client 在 React-GraphQL 中实现搜索功能?

sql-server - 将 Prisma 连接到 Azure SQL 数据库

mysql - 如何在Docker中使用Prisma 2

javascript - Prisma 使用相同模型的 1-1 和 1-n 关系