ID的Apollo GraphQL查询返回null

时间:2019-09-17 16:32:44

标签: javascript typescript graphql

我正在学习GraphQL。刚刚使用Knex.js和PostgreSQL用Apollo-server-express制作了一个简单的API。 我面临一个奇怪的问题,即按ID查询用户,该ID返回null

这是用户架构。

// user.schema.ts
  extend type Query {
    users: [User!]!
    user(id: ID): User
  }

这是用户解析器。

// user.resolver.ts

    user: async (_: any, { id }: { id: number }, { dataSources }: any) => {
      await dataSources.userAPI.findOne({ id });
    }

这是用户的数据源。

  async findOne({ id: idArg }: { id?: number } = {}) {
    const user: User = await this.knex('user')
      .where('id', idArg)
      .first();

    if (!user) return;
    console.log('@ USER HERE > ', user)
    return user;
  }

注意:console.log返回带有值的user

@ USER HERE >  {
  id: 1,
  first_name: 'Some',
  last_name: 'One',
  email: 's@one.com',
  password: '$2a$08$C8PP992UaUX.T90mxm2yD.RKB.ZnAx.gzMpK796JQei4H1BvVNxBG',
  role: 'staff',
  is_active: false,
  created_at: 2019-09-17T16:03:06.949Z,
  updated_at: 2019-09-17T16:03:06.949Z
}

但是以某种方式,它在GraphQL游乐场中返回了null

{
  "data": {
    "user": null
  }
}

它与缓存有关吗?因为我测试了Apollo文档中的某些缓存控件。这就是我之前在用户findOne解析器中添加的内容;

      // Add cache hints dynamically, this will hide result and return null
      // info.cacheControl.setCacheHint({ maxAge: 60, scope: 'PRIVATE' });
      await dataSources.userAPI.findOne({ id });

此后,即使我将其移除,它也开始返回null。我有相同的Post代码,而没有测试info.cache。通过帖子ID查询可以正常工作。

请帮助我。

0 个答案:

没有答案