Warm tip: This article is reproduced from serverfault.com, please click

Can't see relations-回送4 + MongoDB + openapi-to-graphql

(Can't see relations - Loopback 4 + MongoDB + openapi-to-graphql)

发布于 2020-11-30 04:03:45

事先,大家好!

我像这样在Loopback 4中初始化Graphql:

  const graphqlPath = '/graphql';
  // @ts-ignore
  const oas: Oas3 = await (<Oas3>app.restServer.getApiSpec());
  console.log(graphqlHTTP);
  const {schema} = await createGraphQLSchema(oas, {
    strict: false,
    viewer: true,
    baseUrl: url,
  });
  //@ts-ignore
  const handler: graphqlHTTP.Middleware = graphqlHTTP({
    schema,
    graphiql: true,
  });
  app.mountExpressRouter(graphqlPath, handler);
  console.log(`Graphql: ${url}${graphqlPath}`);

然后,我有一个“收藏夹>用户”关系(一个用户可以有许多收藏夹,但是一个收藏夹只有一个用户)。我已经与建立了这种关系lb4 relation但没有进行任何其他更改

用户模型:

  @hasMany(() => Favor)
  favors: Favor[];

偏好模型:

  @belongsTo(() => User)
  userId: string;

在查询(http://localhost:3000/graphql)时,将发生以下情况:

{
  favors {
    id
    userId
    user {
      id
    }
  }
}

查询结果

我不知道它是否与loopback-connector-mongodb不正确地匹配ObjectId的事情有关,但是我不知道如何解决这个问题。

我的package.json:

    "@loopback/core": "^2.12.0",
    "openapi-to-graphql": "^2.2.5",
    "loopback-connector-mongodb": "^5.4.0",
Questioner
FMGordillo
Viewed
11
Miroslav Bajtoš 2020-11-30 22:28:04

LoopBack团队你好👋

为了允许openapi-to-graphql了解关系,由LoopBack应用程序生成的OpenAPI架构必须描述实体之间的链接

LoopBack 4并没有提供此类元数据。我们已经在GitHub问题loopback-next#2153上讨论了这个用例,很遗憾,我们还没有找到一个明确的解决方案。

你可以尝试的方法:在控制器中,使用指向相关API端点的链接部分来增强你的响应规范,以访问相关模型。