KeystoneJS 关系,如何使用 id 数组进行连接

KeystoneJS relationships, how can I connect using an array of ids

我正在使用新版本的 Keystone Next,我正在尝试使用 ID 数组一次连接多个项目。 connect 似乎支持这一点,接受一个对象数组。

const FINISH_VOCABULARY_QUIZ_MUTATION = gql`
mutation FINISH_VOCABULARY_QUIZ_MUTATION(
    $userId: ID!
    $wordId: ID!
) {
    updateUser(id: $userId, data: {
        wrongAnswers: {
            connect: [{id: "idblabla"}, {id: "idblabla2"}]
        }
    }) {
        id
    }
}`;

但我似乎无法弄清楚的是如何将这个 ID 数组作为变量传递给我的突变。 我知道我需要创建一个新类型?该文档仍未完成,因此还没有任何内容。 我也尝试过使用字符串插值来形成我的查询,但它似乎不是 GraphQl 中的东西。

与 KeystoneJS 相比,这更像是一个 GraphQL 问题,但要朝着正确的方向前进,您需要将查询更改为如下所示:

const FINISH_VOCABULARY_QUIZ_MUTATION = gql`
mutation FINISH_VOCABULARY_QUIZ_MUTATION(
    $userId: ID!,
    $ids: [UserWhereUniqueInput!]!
) {
    updateUser(id: $userId, data: {
        wrongAnswers: {
            connect: $ids
        }
    }) {
        id
    }
}`;

然后将您的 ID 数组映射到具有 ID 字段的对象数组。

有一个更好的方法

const FINISH_VOCABULARY_QUIZ_MUTATION = gql`
mutation FINISH_VOCABULARY_QUIZ_MUTATION(
    $userId: ID!,
    $data: SomeAPIDefinedMutationUniqueInput
) {
    updateUser(id: $userId, data: $data)
      id
    }
}`;

这样你:

  • 不必为内部参数定义类型 ($wordsIdWrong: [WordWhereUniqueInput]);
  • 可以reuse/share这个突变 - 从一些导入它,常见的查询,地方(目录) - 只需用不同的data变量调用它;
  • reading/maintenance更容易;

PS。老实说,应该有一些特定的 [to quizes] 突变(不要为此使用 userUpdate),用户(或更好的测验)idSomeAPIDefinedUniqueInput 中定义。