#graphql #apollo-server
Вопрос:
Я пытаюсь написать запрос graphql, который проверяет наличие записи. Целевое поведение здесь заключается в том, что он возвращает запись, если она существует, и ложь, если ее нет. (Я намеренно пытаюсь избежать возврата ошибки, если запись не существует). Я попробовал что-то вроде этого:
union VerifyExistenceResult = Boolean | TheRecordType
verifyRecordExists(recordUrl: String!): VerifyExistenceResult!
но профсоюзы, похоже, не поддерживают наличие скаляров. Есть ли здесь лучший подход?
Ответ №1:
Да , вы определенно можете это сделать. Вы можете объявить переменную в своем коде, результатом которой является логическое значение.После этого в своем запросе gql вы можете создать директиву , которая возвращает нужное вам поле. Если логическое значение возвращает отрицательное значение , это поле никогда не запрашивается. (Документы для директив apollo : https://www.apollographql.com/docs/apollo-server/schema/directives/)
Комментарии:
1. Спасибо! Я посмотрел директивы, но на самом деле не понял, как их использовать для этого сценария.. есть ли шанс, что вы могли бы помочь мне с примером?
2. @VishnuNarayanan Я только что опубликовал еще один ответ, надеюсь, это поможет
Ответ №2:
Допустим, у вас есть следующий запрос gql.
const GET_RECORD=gql`
query ($skipRecord:Boolean!){
recordUrl
}
`
Затем вам придется объявить локальную переменную с именем, например, localSkipRecord.
Теперь, когда вы на самом деле используете запрос, скажем , с помощью крючка, вы должны передать это:
{data,loading,error}=useMutation(GET_RECORD,{
variables:{skipRecord:localSkipRecord}
})