gpt4 book ai didi

null - express + express-graphql helloworld 返回 null

转载 作者:行者123 更新时间:2023-12-03 22:21:20 25 4
gpt4 key购买 nike

我是 graphql 的新手,并试图实现一个简单的 helloworld 解决方案,该解决方案在查询时返回 null。该设置包括 sequelize 和 pg 以及 pg-hstore,但我已禁用它们以尝试找出问题所在。在此先感谢,现在卡住了两天。

这是我的解析器:

module.exports = {
Query: {
hello: (parent, { name }, context, info) => {
return `Hello ${name}`;
},
},
};

这是我的架构:
const { buildSchema } = require("graphql");
module.exports = buildSchema(
`type Query{
hello(name:String!):String!
}
`
);

这是我的应用程序 app.js 的根目录。我忽略了我禁用的中间件,因为它似乎无关紧要,因为无论有没有它们,我都会遇到错误
const createError = require("http-errors");
const express = require("express");
const path = require("path");
const cookieParser = require("cookie-parser");
const logger = require("morgan");
const sassMiddleware = require("node-sass-middleware");
const graphqlHTTP = require("express-graphql");
const schema = require("./persistence/graphql/schema");
const persistence = require("./persistence/sequelize/models");
const rootValue = require("./persistence/sequelize/resolvers/index");

const indexRouter = require("./routes/index");
const usersRouter = require("./routes/users");

const app = express();

// view engine setup
app.set("views", path.join(__dirname, "views"));
app.set("view engine", "pug");

app.use(
"/api/graphql",
graphqlHTTP({
schema,
rootValue,
graphiql: true,
})
);

module.exports = app;

当我查询如下:
{
hello(name: "me")
}

我收到此错误:
{
"errors": [
{
"message": "Cannot return null for non-nullable field Query.hello.",
"locations": [
{
"line": 2,
"column": 3
}
],
"path": [
"hello"
]
}
],
"data": null
}

我知道还有其他服务器,但我真的需要用 express-graphql 来解决这个问题。提前致谢。

最佳答案


module.exports = {
Query: {
hello: (parent, { name }, context, info) => {
return `Hello ${name}`;
},
},
};

是类似于 graphql-toolsapollo-server 期望得到的解析器映射。这不是传递给 rootValue 的有效对象。

如果您想使用 rootValue 来解析您的根级字段,那么该对象将需要只是一个没有类型信息的字段名称映射。此外,如果您使用函数作为值,它们将只接受三个参数(args、context 和 info)。
module.exports = {
hello: ({ name }, context, info) => {
return `Hello ${name}`;
},
};

也就是说,这不是解析器函数——通过根传递这样的值与实际为架构中的字段提供解析器不同。无论您使用什么 HTTP 库( express-graphql 或其他东西),您都应该使用 never use buildSchema

关于null - express + express-graphql helloworld 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61405980/

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