GraphQL Prisma - 定义链接到两个用户的 "vote"类型

标签 graphql prisma prisma-graphql

我刚刚开始使用 Prisma。之前主要使用 firebase 和 mongodb 来定义我的架构。

我正在尝试定义以下架构:

Vote {
    id: ID!
    from: User! # The user who voted
    for: User! # The user that received a vote
    rate: Float!
}

基本上,我想要实现的是让用户能够为其他用户投票(给他们评分)。 比如说,在 MongoDB 中,我会通过创建一个单独的集合来实现,如下所示:

{
    id: DocumentID
    from: String // id of the user who voted
    for: String // id of the user that received a vote
    rate: Number
}

在这里,我只是将这些字段(from 和 for)指定为字符串,然后通过应用程序逻辑将它们与 User 集合链接起来。

当然,在 GraphQL Prisma 中情况会有所不同。但我仍然对如何建立关系感到有点困惑。以及下面到底发生了什么。

如何使用 Prisma GraphQL 创建此类架构?

最佳答案

当同一类型有多个关系字段时,需要使用@relation指令使其明确。

type Vote {
  id: ID! @unique
  votingUser: User! @relation(name: "VoteAuthor")
  votedUser: User! @relation(name: "VoteReceiver")
  rate: Float!
}

type User {
  id: ID! @unique
  receivedVotes: [Vote!]! @relation(name: "VoteReceiver")
  givenVotes: [Vote!]! @relation(name: "VoteAuthor")
  name: String!
}

关于GraphQL Prisma - 定义链接到两个用户的 "vote"类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49536857/

相关文章:

graphql - 尝试 Prisma GraphQL 'Variable ' 时,得到 'UserCreateInput!' $data' 类型 'createUser' 的预期值 '

javascript - Graphql 查询为关系文档返回 null,查询中缺少字段但存在于 primsa admin 中

graphql查询SQL父子关系

postgresql - 没有时间/只有数据的日期时间?在 Prisma 中有可能吗?

javascript - GraphQL 突变抛出错误

typescript - Nexus Prisma - 如何在全局范围内使用 crud 处理 createdAt 和 updatedAt?

node.js - 单一查询不会返回嵌套数组

javascript - 在运行下一个突变之前重置值

react-native - 如何从突变查询更新 Apollo 数据存储/缓存,更新选项似乎没有触发

node.js - 如何实现 isTypeOf 方法?