【问题标题】:Querying NOT NULL GraphQL with Prisma使用 Prisma 查询 NOT NULL GraphQL
【发布时间】:2019-06-16 05:02:41
【问题描述】:

架构:

type TrackUser {
  id: ID! @unique
  createdAt: DateTime!
  user: User #note there is no `!`
}
type User {
  id: ID! @unique
  name: String! @unique
}

我想获取所有TrackUser,其中User 不为空。查询是什么?

【问题讨论】:

  • 您无法过滤(至少您没有向我们展示任何内容)所以这是不可能的。
  • 这个问题是prisma特有的吗?
  • 对,它是棱镜。
  • 感谢艾伦编辑问题 :)

标签: graphql apollo prisma


【解决方案1】:

这行得通,但我想这只是一个 hack..

query TrackUsersQuery($orderBy: TrackUserOrderByInput!, $where: TrackUserWhereInput, $first: Int, $skip: Int) {
  trackUsers(where: $where, orderBy: $orderBy, first: $first, skip: $skip) {
    id
    createdAt
    user {
      id
      name
    }
  }
}


variables = {
  where: {
    user: {
      name_contains: ''
    }
  }
}

更新:

对于 Prisma2,您有以下可能性:

对于没有发票的产品,您可以使用以下方式:

const data = await prisma.product.findMany({
    where: {
      invoices: {
        none: {
          id: undefined,
        },
      },
    },
})

对于没有关联产品的发票:

const data = await prisma.invoice.findMany({
    where: {
      productId: null,
    },
})

更多详情:https://github.com/prisma/prisma/discussions/3461

【讨论】:

  • 带棱镜。 Prisma 会为你生成一个 chema。
  • 在你给我们这些信息之前我们应该怎么知道?
【解决方案2】:

这是一个可能的查询:

query c {
  trackUsers(where: { NOT: [{ user: null }] }) {
    name
  }
}

您可以在此处查看它在 Playground 中的外观。我在数据模型中为 Trackuser 添加了一个名称,以便能够在没有用户的情况下从那一侧创建它。

【讨论】:

    猜你喜欢
    • 2021-08-30
    • 2019-11-05
    • 2020-09-28
    • 2011-11-10
    • 2021-01-23
    • 2018-09-12
    • 2020-03-07
    • 2019-12-18
    • 2019-06-14
    相关资源
    最近更新 更多