当前位置: 首页 > 知识库问答 >
问题:

GraphQL Prisma-定义链接到两个用户的“投票”类型

汪正雅
2023-03-14

我刚开始使用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)指定为字符串,然后通过应用程序逻辑将它们与用户集合链接起来。

当然,在GraphQL Prisma中会有所不同。但我还是有点搞不清楚这种关系是如何建立的。下面到底发生了什么。

如何使用Prisma GraphQL创建这样的模式?

共有1个答案

山翼
2023-03-14

当同一类型有多个关系字段时,需要使用@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!
}
 类似资料:
  • 我需要加载实体以及表示特定用户(当前登录用户)投票的实体。这是两个实体: 所有关联都是单向的。我不使用OneToMany的原因是集合太大,需要在访问之前进行适当的分页:不向我的实体中添加与任何实体的关联意味着防止任何人天真地执行类似于for(PostVote pv:post.getPostVoices())的操作。 对于我现在面临的问题,我有各种各样的解决方案:在我看来,没有一个是完全令人信服的。

  • 我想找到一种方法,使悬停属性在投票后保持活动状态,这是状态,并让Javascript或Firebase记住为该用户保持投票图标处于该状态。所以当一个用户投了几个名字,然后再回到页面时,他们会看到他们投了哪些名字,他们投的是什么。 我正在寻找如何实现这一目标的想法。 目前,在firebase中,我将用户的身份验证ID(uid)保存在他们投票的每个人的名字中,或者是1或者是-1表示支持或支持。我确信可

  • 一、简介 系统的投票功能提供了两种投票类型,第一个是单选投票.第二种是多选投票.网站编辑人员可以根据实际的需求,选择类型进行操作。 何处使用投票: 常用于首页、内容页、及专题页面。所有你想放投票的区域。 如何使用: 只需要根据投票所放位置不同,复制对应代码到模版里即可。 系统信息发布页 和 专题管理内置提供了投票选择功能,只需手动点选,即可添加投票。 针对不同位置CSS样式不同,系统提供了三种常用

  • 现在我们的系统更完善了,但是想要找到最受欢迎的帖子有点难。我们需要一个排名系统来给我们的帖子排个序。 我们可以建立一个基于 karma 的复杂排名系统,权值随着时间衰减,和许多其他因素(很多功能都在 Telescope 中实现了,他是 Microscope 的大哥)。但是对于我们的例子 app, 我们尽量保持简单,我们只按照帖子收到的投票数为它们排序。 让我们实现一个给用户为帖子投票的方法。 数据

  • 获取投票信息 Mudu.Room.Vote.Get(function (response) { response = JSON.parse(response) if (response.status === 'y') { console.log('获取成功,数据为:', response.data) } if (response.status === 'n') {

  • 我试图实现一个协议栈使用协议层设计模式:http://www.eventhelix.com/realtimemantra/patterncatalog/protocol_layer.htm 在我们的项目中,我将所有层作为单独的DLL。我有以下几层: > LLC层dll MAC层dll 物理层dll 我在同一个解决方案中还有另一个项目,它实现了设计模式,并实现了协议层的一般功能。我的所有层都继承自协