【问题标题】:Combine Prisma Query with Non-Prisma Data将 Prisma 查询与非 Prisma 数据相结合
【发布时间】:2019-03-17 01:59:20
【问题描述】:

好的,所以我有以下类型,“Spot”类型来自 prisma。

type Query {
  SpotDetails(id: ID!, lat: String, long: String, regLocation: String): SpotDetails!
  Spots: [Spot!]!
}

type SpotDetails {
  info: Spot!
  regulations: [SpotRegulation]

}

type SpotRegulation {
  regulationNumber: String
  generalRegText: String
  waters: String
  seasons: String
  bags: String
  notes: String
}

如何创建解析器,我可以在其中通过 id 查询 Prisma 的位置,然后将其与 SpotRegulation 类型的其他字段结合起来?基本上我希望能够查询SpotDetails

现在对于解析器,我有以下内容,但我认为它不起作用,因为提供给 Prisma 查询的信息是 SpotDetails 信息,而不是它所期望的 Spot 信息。

SpotDetails(parent, args, ctx, info) {
  let { id } = args;
  let details = new Object();
  details['info'] = ctx.db.query.spot({ where: { id } }, info);

},

这是我在 graphQL 操场上用来测试的查询

query {
  SpotDetails(id:"cjkbwq1nm00310a958udjcr20"){
    regulations{
      notes
    }
  }
}

【问题讨论】:

    标签: javascript prisma-graphql


    【解决方案1】:

    所以我最初包含了信息,因为它用于 GraphQL 样板的示例代码中。然而,在查看有关读取数据的 prisma 文档后,没有一个示例包括传递信息。我不确定这些信息的用途,但是当我从解析器中的点调用中删除它时,如下所示,它按预期工作。我仍然需要弄清楚为什么会传递信息,但我需要完成它。

    SpotDetails(parent, args, ctx, info) {
      let { id } = args;
      let details = new Object();
      details['info'] = ctx.db.query.spot({ where: { id } });
      return details;
    },
    

    【讨论】:

      【解决方案2】:

      如果不传递 info 对象,我认为嵌套多级字段时它将不起作用。 prisma 只返回 Spot 相关的字段。

      Spot 有很多 SpotRegulation 吗?如果是这样,法规是现场的子领域?

      如果不需要传递信息对象,可以使用generated javascript client,而不是prisma-binding db

      【讨论】:

        猜你喜欢
        • 2021-03-20
        • 2019-11-05
        • 1970-01-01
        • 2021-09-13
        • 2021-10-17
        • 2021-11-09
        • 2020-12-18
        • 2022-08-21
        • 2020-12-31
        相关资源
        最近更新 更多