Lighthouse GraphQL - 如何将数组作为变量传递?

Lighthouse GraphQL - how to pass array as variable?

我正在努力构建一个简单的 Facebook 克隆来积累我对 GraphQL 的了解。我在 Laravel 之上使用 lighthouse-php 来提供我的数据。从本质上讲,一个用户有很多朋友,我知道这是可行的,因为在修补程序控制台中,我可以 return 使用 $user->friends()->get() 之类的东西来获得正确的数据。我正在努力弄清楚如何传递一组数据。

在我的前端,我有一个 Vuetify 组合框(基本上是一个 select 下拉列表),它构建了一个电子邮件数组,这就是我试图传递给我的后端突变的内容。

如何构造类型和变异以使其接受电子邮件数组?

user.graphql:

extend type Mutation @guard(with: ["api"]) {
    addFriends(input: [AddFriendsInput]! @spread): [User]! @field(resolver: "UserMutator@addFriends")
}

type User {
    id: ID!
    email: String!
    password: String!
    first_name: String
    last_name: String
    created_at: DateTime!
    updated_at: DateTime!

    friends: [User]! @belongsToMany(relation: "friends")
}

input AddFriendsInput {
    email: String!
}

addFriend.gql:

mutation AddFriends($friends: [AddFriendsInput]!) {
  addFriends(input: { email:[$friends] }){
    id
    email
  }
}

好的,终于明白了。

将输入修改为:

input AddFriendsInput {
  email: String!
  # friends: [User]
}

并将我的 Mutation 更改为:

mutation AddFriends($friends: [AddFriendsInput]!) {
  addFriends(input: $friends) {
    id
    email
  }
}

这让我现在可以将一组电子邮件传递给我的解析器。