gpt4 book ai didi

graphql - 如何使用 graphql-tools 使用或解析枚举类型?

转载 作者:行者123 更新时间:2023-12-04 22:28:25 27 4
gpt4 key购买 nike

我在 graphql-tools 中找不到任何地方文档如何使用 enum输入到 makeExecutableSchema 的模式中的类型.任何人都知道这是如何做到的?

示例代码:

enum Color {
RED
GREEN
BLUE
}

type Car {
color: Color!
}
Color 的解析器是什么?看起来像?

最佳答案

您不会为 Color 编写解析器.这是一个简单的、可运行的示例:

const bodyParser = require('body-parser');
const { graphqlExpress, graphiqlExpress } = require('graphql-server-express');
const { makeExecutableSchema } = require('graphql-tools');
const app = require('express')();

const carsData = [
{color: 'RED'},
{color: 'GREEN'},
{color: 'BLUE'},
];

const typeDefs = `
enum Color {
RED
GREEN
BLUE
}
type Car {
color: Color!
}
type Query {
cars: [Car!]!
}
`;

const resolvers = {
Query: {
cars: () => carsData,
}
};

const schema = makeExecutableSchema({
typeDefs,
resolvers,
});

app.use('/graphql', bodyParser.json(), graphqlExpress({ schema }));
app.use('/graphiql', graphiqlExpress({ endpointURL: '/graphql' }));

app.listen(3000);

运行 carsGraphiQL 中查询 ( {cars {color}} )您将在我们的数据中看到为每辆车返回的颜色。现在,更改 中的值之一数据 (不是 Enum 定义)到您未定义的颜色,例如 PINK .再次运行查询,您将看到如下错误消息:
"Expected a value of type \"Color\" but received: PINK"

这也适用于解析器,因此如果我通过为 Car 添加解析器来覆盖数据,如下所示:
Car: {
color: () => 'RED'
}

该查询将显示所有颜色为 RED 的汽车。如果将解析器返回的值更改为 BLACK ,查询将再次出错。

枚举只是强制特定字段解析为的任何值都在您定义的值集内的一种方式。

关于graphql - 如何使用 graphql-tools 使用或解析枚举类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45056347/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com