看不到关系 - Loopback 4 + MongoDB + openapi-to-graphql

Posted

技术标签:

【中文标题】看不到关系 - Loopback 4 + MongoDB + openapi-to-graphql【英文标题】:Can't see relations - Loopback 4 + MongoDB + openapi-to-graphql 【发布时间】:2021-03-12 01:04:00 【问题描述】:

先向大家问好!

我在 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`);

然后我有一个 Favors>User 关系(一个用户可以有很多 Favor,但一个 Favor 只有一个用户)。我已经与lb4 relation 建立了这种关系,并且我没有进行任何其他更改

用户模型:

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

喜欢的模特:

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

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


  favors 
    id
    userId
    user 
      id
    
  

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

我的 package.json:

    "@loopback/core": "^2.12.0",
    "openapi-to-graphql": "^2.2.5",
    "loopback-connector-mongodb": "^5.4.0",

【问题讨论】:

【参考方案1】:

来自 LoopBack 团队的问候 ?

为了让 openapi-to-graphql 理解关系,LoopBack 应用程序生成的 OpenAPI 模式必须描述实体之间的Links。

LoopBack 4 不提供开箱即用的此类元数据。我们一直在 GitHub 问题loopback-next#2153 中讨论这个用例,遗憾的是我们还没有找到明确的解决方案。

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

【讨论】:

感谢您的回复!我会尝试这样做并用一种方法更新这个问题。

以上是关于看不到关系 - Loopback 4 + MongoDB + openapi-to-graphql的主要内容,如果未能解决你的问题,请参考以下文章

loopback4-openapi规范中的错误映射

使用 Firebase 登录的 Loopback 4 身份验证

Loopback 4 调试器 nodemon 解决方案

Loopback-4 通过模型添加时间戳 createdAt 和 updatedAt

Loopback 4:CRUDRestController 的授权装饰 - 无论如何可能吗?

LoopBack 4 基于 Node 的 TS 建造 API 与微服务