用户数据未从查询调用返回任何内容
Posted
技术标签:
【中文标题】用户数据未从查询调用返回任何内容【英文标题】:User data not returning anything from query call 【发布时间】:2020-12-16 14:23:31 【问题描述】:我不确定我可能做错了哪一部分。我希望得到一些建议。
我在GraphiQL
中使用的查询是:
query getUser($id:Int!)
user(id:$id)
id
email
对于后端,我使用的是 NodeJS。我还将用户类型声明为:
const UserType = new GraphQLObjectType(
name: 'User',
fields: () => (
id: type: GraphQLID ,
email: type: GraphQLString
)
);
我的根查询是:
const RootQuery = new GraphQLObjectType(
name: 'RootQueryType',
fields:
user:
type: UserType,
args: id: type: GraphQLInt ,
resolve(parentValue, args)
const query = `SELECT * FROM users WHERE id=$1`;
const values = [ args.id ];
dbQuery.query(query, values).then(( rows ) =>
console.log(rows[0]);
return rows[0];
);
);
const schema = new GraphQLSchema( query: RootQuery );
app.use(
'/api/v1/graphql',
graphqlHTTP(
schema: schema,
graphiql: true
)
);
我得到的回报是:
"data":
"user": null
我希望知道我可能做错了什么,导致返回 null 而不是我从数据库中查询的数据。
感谢大家的帮助。
【问题讨论】:
【参考方案1】:配合await使用会更清晰
const RootQuery = new GraphQLObjectType(
name: 'RootQueryType',
fields:
user:
type: UserType,
args: id: type: GraphQLInt ,
resolve: async(parentValue, args)
const query = `SELECT * FROM users WHERE id=$1`;
const values = [ args.id ];
const rows = await dbQuery.query(query, values);
return rows[0];
);
当使用 Promise 并在 Promise 中返回任何内容时,只会将结果返回给执行的 Promise。它不会作为一个整体返回到父函数。
你也可以像下面这样返回整个 promise 函数
return dbQuery.query(query, values)
【讨论】:
感谢您的回复。我都试过了,我得到的回应是空的。第一种方法改为返回 user: id: null, email: null 即使解析器返回了数据。 它开始工作了。我不确定我改变了什么或我可能做错了什么,但你的回答非常有帮助。非常感谢:D以上是关于用户数据未从查询调用返回任何内容的主要内容,如果未能解决你的问题,请参考以下文章