GraphQL Apollo 无法为不可空返回 Null [重复]
Posted
技术标签:
【中文标题】GraphQL Apollo 无法为不可空返回 Null [重复]【英文标题】:GraphQL Apollo Cannot Return Null for non-nullable [duplicate] 【发布时间】:2018-04-10 08:55:26 【问题描述】:我正在尝试学习 graphql,以便可以将其应用到 React 网站。不过,我现在遇到了一些麻烦,并且无法弄清楚为什么当我 100% 确定返回的内容不为 null 时,它会说返回 null。如果我在解析器中打印results
,它会按预期打印一个用户对象数组,但是当它返回时,它说我正在为字段Query.users
返回null。任何帮助将不胜感激。
Query: // graphql query resolver
users: function (parent, args, User )
var mongoose = require('mongoose');
var array = [];
mongoose.connect('localhost:27017', function(err)
if(err) throw err;
User.find().then(results=>
console.log(results);
return results;
);
);
type Query //query typedef
users: [User]!
type User // graphql schema typedef
_id: String!
username: String!,
email: String!,
joined: String,
interests: [String],
friends: [User]
var User = new Schema( // mongoose schema def
username: !String,
email: !String,
joined: String,
interests: [String],
friends: [[this]]
);
【问题讨论】:
【参考方案1】:这是因为您没有在 users
函数中返回任何内容。
您可以等待并返回已解决的承诺值,如下所示。试试这个并检查您是否仍然无法从查询中获取用户列表。
users: function (parent, args, User )
return await getUsers()
const getUsers = () =>
var mongoose = require('mongoose');
return new Promise((resolve, reject) =>
mongoose.connect('localhost:27017', function(err)
if(err)
reject(err);
User.find().then(results=>
console.log(results);
resolve(results);
);
);
);
我添加的代码有 ES6,如果您在整个应用程序中使用的是 ES5,请将其转换为 ES5。
【讨论】:
成功了!非常感谢。以上是关于GraphQL Apollo 无法为不可空返回 Null [重复]的主要内容,如果未能解决你的问题,请参考以下文章
Apollo GraphQL“不能为不可为空的字段 Mutation.createUser 返回 null”
无法为 mikro orm graphql 中的不可空字段返回 null
Apollo graphql 正在为 mongodb 中的空子文档返回空数据