Как сделать пользовательский тип с определенным значением в graphQl

Это первый раз, когда я использую graphQL, у меня есть два вопроса, связанных с ним.

Я смутно просмотрел документы и строил что-то свое.

Итак, моя установка прямо сейчас очень проста. В начальной точке моего приложения у меня есть что-то вроде этого

const express = require('express')
const app = express();
const graphqlHTTP = require("express-graphql")
const schema = require('./schema/schema')

app.use("/graphql", graphqlHTTP({
  schema: schema
}));

app.get('/', (req, res) => {
  res.json({"message": "Welcome to EasyNotes application. Take notes quickly. Organize and keep track of all your notes."});
});


//Listen to specific post 
app.listen(4000, () => {
  console.info("Listening for request on port 4000")
});

И моя схема выглядит так

const graphql = require("graphql")

const { 
  GraphQLObjectType, 
  GraphQLString, 
  GraphQLSchema,
  GraphQLList,
  GraphQLID,
  GraphQLNonNull,
  GraphQLInt
  } = graphql


const GenderType = new GraphQLObjectType({
  name: 'Gender',
  fields: () => ({
    male: {

    }
  })
})


  const UserType = new GraphQLObjectType({
    name: 'User', // Importance of Name here
    fields: () => ({
      id: {
        type: GraphQLID
      },
      name: {
        type: GraphQLString
      },
      gender: {
        type: GenderType // Create custom type for it later
      }
    })
  })

В приведенном выше фрагменте кода Inside UserType я хочу, чтобы мой GenderType был либо мужчиной, либо женщиной. Как написать свой собственный тип, чтобы он принимал только значение «мужской» или «женский»?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
38
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

То, что вы хотите сделать, может быть достигнуто как с Скалярные типы, так и с Типы перечислений. В вашем случае вы, вероятно, захотите использовать перечисление, потому что у вас есть небольшой конечный список разрешенных значений. Использование Enum Type покажет допустимые значения в документации в GraphiQL. В большинстве API-интерфейсов GraphQL значения Enum используют все значения заглавных букв, но вы можете использовать свойство value для прозрачного сопоставления значения female с FEMALE. Это, например, позволит вам обрабатывать значения в нижнем регистре на стороне сервера (мы делаем это часто, потому что значения поступают в нижнем регистре из наших postgres). Вот код для вдохновения:

const GenderType = new GraphQLEnumType({
  name: 'Gender',
  values: {
    FEMALE: {
      value: 'female'
    },
    MALE: {
      value: 'male'
    }
  }
});

Другие вопросы по теме