Как работать с аргументами только для чтения из DataLoader - (GraphQL + Apollo в Next JS) - PullRequest
0 голосов
/ 21 июня 2020

У меня есть функция загрузчика, чтобы получать поваров из базы данных. Таким образом, этот загрузчик получает массив ids, и что странно, так это то, что ids имеют тип readonly.

Когда я пытаюсь передать этот тип только для чтения в запрос базы данных, он дает ошибка.

enter image description here

How can I fix the type definition?

Source code: https://github.com/LauraBeatris/graphql-with-nextjs/blob/master/pages/api/loader.ts

1 Ответ

0 голосов
/ 22 июня 2020

Я исправил это в соответствии с комментарием @DanielRearden.

Функция, которую получает экземпляр DataLoader, использует общие c типы, поэтому мы можем передать тип аргументу ids, а затем использовать это внутри метода whereIn knex.

 new DataLoader((ids: string[]) => (
    databaseClient
      .table("chefs")
      .whereIn("id", ids)
      .select("*")
      .then(rows => ids.map(id => rows.find(row => row.id === id)))
  ))
...