Это первый раз, когда я использую 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 был либо мужчиной, либо женщиной. Как написать свой собственный тип, чтобы он принимал только значение «мужской» или «женский»?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


То, что вы хотите сделать, может быть достигнуто как с Скалярные типы, так и с Типы перечислений. В вашем случае вы, вероятно, захотите использовать перечисление, потому что у вас есть небольшой конечный список разрешенных значений. Использование Enum Type покажет допустимые значения в документации в GraphiQL. В большинстве API-интерфейсов GraphQL значения Enum используют все значения заглавных букв, но вы можете использовать свойство value для прозрачного сопоставления значения female с FEMALE. Это, например, позволит вам обрабатывать значения в нижнем регистре на стороне сервера (мы делаем это часто, потому что значения поступают в нижнем регистре из наших postgres). Вот код для вдохновения:
const GenderType = new GraphQLEnumType({
name: 'Gender',
values: {
FEMALE: {
value: 'female'
},
MALE: {
value: 'male'
}
}
});