Переменная «$userId» типа «ID», используемая в позиции, ожидающей тип «ID!»

#typescript #graphql #template-strings

#typescript #graphql #шаблон-строки

Вопрос:

Я пытаюсь выполнить запрос graphql с использованием пакета npm graphql-request . Я обнаруживаю использование литералов шаблона.

    async getCandidate(userId: number) {
            const query = gql`
            query($userId: ID){
              candidate(id: $userId){
                id _id source phone
              }
            }
            `
            const variables = {userId: "/api/candidates/"   userId}
            return await request(GRAPHQL_URL, query, variables)
        }
  

Я пытаюсь использовать usedId переменную, но у меня возникает ошибка :

 Variable "$userId" of type "ID" used in position expecting type "ID!".: {"response":{"errors":[{"message":"Variable "$userId" of type "ID" used in position expecting type "ID!".","extensions":{"category":"graphql"},"locations":[{"line":2,"column":9},{"line":3,"column":19}]}],"status":200},"request":{"query":"nttquery($userId: ID){ntt  candidate(id: $userId){ntt    id _id source phonentt  }ntt}ntt","variables":{"userId":"/api/candidates/1"}
  

Ответ №1:

Вам просто нужно изменить это query($userId: ID){ на это query($userId: ID!){

Это потому, что схема определяет, что значение для userId должно быть ненулевым.