首页 > 解决方案 > Graphql Appolo Server 不会将绑定函数解析为字段

问题描述

我正在使用 Apollo Server 和 TypeOrm。我想让嵌套关系“懒惰”,所以我写了一些函数来以异步方式获取我的帖子的创建者。

const fetchUser = async (userId: string): Promise<User> => {
    return await User.findOne(userId) as User;
}
const transformPost = (post: Post): Post => {
    return { ...post, creator: fetchUser.bind(null, post.creatorId) } as Post;
}

然后在解析器中我就这样返回。

return {
            posts: posts.slice(0, realLimit).map(post => transformPost(post)),
            hasMore: posts.length === realLimitPlusOne
        }

所以 post return 对象看起来像这样。

{
  id: 302,
  title: 'Love Affair, or the Case of the Missing Switchboard Operator (Ljubavni slucaj ili tragedija sluzbenice P.T.T.)',
  text: 'In hac habitasse platea dictumst. Etiam faucibus cursus urna. Ut tellus.',
  points: 0,
  creatorId: 1,
  created_at: 2020-03-09T22:34:04.000Z,
  updated_at: 2021-03-10T10:16:39.088Z,
  creator: [Function: bound fetchUser]
}

但是当我在我的 GraphQL 中调用它时,我得到了

 "message": "Cannot return null for non-nullable field User.username.",

标签: typescriptexpressgraphql

解决方案


推荐阅读