Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >需要ID属性名称的Vapor 4关系和模型

需要ID属性名称的Vapor 4关系和模型
EN

Stack Overflow用户
提问于 2020-06-17 04:30:16
回答 1查看 175关注 0票数 0

我正在尝试在应用程序(Vapor 4)中设置育儿功能,虽然这是可以实现的,但我遇到了这个问题,或者至少遇到了一个限制,导致模型中使用的属性名称意义较小。

Vapor 4要求将@ID属性命名为'id‘(var id:...),而在以前的版本中,属性名称是可定义的,因此更有意义。

例如,用户表:我们的用户数据使用用户名作为唯一键(不是主键),因此用户模型是这样定义的:

代码语言:javascript
运行
AI代码解释
复制
  // 'Unique key for the record.'
  @ID(custom: "sysid", generatedBy: .database)
  var id: Int?

  // Unique login name 
  @Field(key: "username")
  var username: String?

  // Password for this login.
  @Field(key: "password")
  var password: String
  ...

这是有意义的,并且是可读的,并且在应用程序中使用模型的任何地方,开发人员都知道Id字段是sysid,而用户名是用户名。

规则和配置文件表中的外键使用用户名作为外键(由于遗留原因)。然而,要改变它,数据库和应用程序目前是不可能的。

自从最初的实现以来,我一直在阅读并意识到使用关系(而不是过滤器和连接)的好处。

要在Vapor 4中使用关系,我必须将模型定义更改为:

代码语言:javascript
运行
AI代码解释
复制
  // 'Unique key for the record.'
  @Field(key: "sysid")
  var sysid: Int?

  // Unique login name 
  @ID(key: "username")
  var id: String?

  // Password for this login.
  @Field(key: "password")
  var password: String
  ...

我的模型定义没有那么有意义(尽管它确实可以工作):

当然,这意味着现在需要将代码.username更改为.id,这样就不那么容易理解了。

在Vapor 3中,我们可以将ID属性名称定义为任何名称。如果Fluent/Vapor 4像以前的版本一样允许自定义属性名称,事情会容易得多。

我想知道是否有人遇到过这个“问题”?或者有一个解决办法,允许模型继续使用有意义的名称,同时仍然允许为人父母的工作正常进行。

我使用了这个简单的用户数据作为示例,但其他人肯定会使用不同的/有意义的列名,这会导致我的..烦人?

如有任何指导或想法,将不胜感激

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-25 12:13:02

Fluent的relationship属性包装器都基于在id属性下定义的关系。这允许您只使用父ID创建子ID,而不必首先在DB中查找父ID,等等。

如果您想使用ID以外的其他东西,则需要手动执行查询(对于父级/子级相对简单),或者复制属性包装器并选择不同的属性。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62421519

复制
相关文章
无请求不响应?
前几天我们学习了HttpServletResponse,今天就让我们了解一下HttpServletRequest。和HttpServletResponse一样,在service方法中的request的类型是ServletRequest,而doGet/doPost方法的request的类型是HttpServletRequest,HttpServletRequest是ServletRequest的子接口,功能和方法更加强大。
阿Q说代码
2021/05/13
1.3K0
无请求不响应?
无协作,不原型!
Mockplus3.1新增了团队协作功能,支持一键创建团队项目、团队成员快捷管理、一键通知成员审阅、多人评论批注的功能。Mockplus是一个简单快速的原型设计工具,对于需要协作的项目,可允许多个团队
奔跑的小鹿
2018/03/16
1.2K0
无协作,不原型!
树莓派无屏幕无线远程
同样,在SD卡的根目录(boot)新建“wpa_supplicant.conf”文件;
菜菜有点菜
2022/03/17
7430
树莓派无屏幕无线远程
无屏幕BCI系统也有强大的分类性能
一般说来,传统脑机接口(BCI)系统的交互过程依靠一个图形化的用户界面,不利于设备的便携性。而一种无屏幕的BCI可以通过让机器人在外界环境中发出刺激从而实现更直接的命令其中机器人使用激光光点凸显环境中的候选对象,而用户的目标则从脑电图(EEG)的诱发信号中解码得来。这种方式对于BCI系统功能结构的升级提供了一种开创性思路,但同时为EEG分类的可靠性带来了挑战。
脑机接口社区
2022/09/22
3650
无屏幕BCI系统也有强大的分类性能
Windows开始菜单无响应
之前遇到过Windows开始菜单点击无响应,最近又遇到开始菜单搜索无响应或多次重启才可以使用。 所以我将解决方法记录一下方便自己。
繁华是客
2023/03/03
2.1K0
解决 SSH 无操作自动断开 | pychram 超时无响应
工作中常需要连接着服务器,下班或暂时离开时会出现一段时间不操作终端,此时就会自动断开。
宋天伦
2023/10/20
9040
RDP你的凭据不工作/RDP密码不刷新
如果你不属于上述的情况,请查看:https://learn.microsoft.com/zh-cn/windows-server/remote/remote-desktop-services/troubleshoot/rdp-error-general-troubleshooting#check-whether-a-group-policy-object-gpo-is-blocking-rdp-on-a-local-computer
阿龙w
2022/12/02
13.2K0
RDP你的凭据不工作/RDP密码不刷新
Windows凭据不工作
如果不是敲错IP、用户名、密码,报凭据不工作,一般情况下执行这几句命令后重启远程服务就正常了
Windows技术交流
2021/06/15
6.5K0
无键盘屏幕配置树莓派连接WiFi
Ubuntu 20.04 LTS都发布好一段时间了,官方支持RaspberryPi,手痒痒了想试试,结果发现没带mini HDMI的转接线,看了下Ubuntu官方的树莓派安装文档: https://ubuntu.com/tutorials/how-to-install-ubuntu-on-your-raspberry-pi#1-overview 可以直接在TF卡根目录下面创建配置文件来实现WiFi连接的.
全栈程序员站长
2022/07/01
1.1K0
无键盘屏幕配置树莓派连接WiFi
无文件挖矿应急响应处置报告
由于运维过程中可能存在违规操作、过失操作或者防护能力不足导致被恶意操作使得主机遭受挖矿程序的侵害,该挖矿程序会下载恶意程序至WMI中,实现无文件挖矿和内网渗透,并下载DDOS攻击程序和通过任务计划每隔20分钟自动生成版本校验恶意程序。
FB客服
2019/07/09
3.3K0
无文件挖矿应急响应处置报告
Java中的屏幕共享
远程屏幕共享用于各种应用程序和服务,从网络会议到远程访问应用程序。二线工程师可以使用它来协助一线的同事,或者技术支持专家可以使用它来准确了解到客户的故障现象。
闻说社
2022/11/04
2.1K0
RestTemplate推送数据无响应的解决办法
导读 A平台在给其他平台推送数据时,A平台调用其他平台接口成功,但无返回结果,导致消费机数据不消费。 逻辑分析 应该有推送多长时间无返回结果就为推送失败,这样的逻辑。 代码分析 推送源码 RestTemplate restTemplate = new RestTemplate(); ResponseResult responseResult = restTemplate.postForObject(syncUrl, formEntity, ResponseResult.class); 感觉restTempl
翟凤玺
2020/10/29
2.2K0
工作默默无闻的sysmon
golang 里面里面有一个默默无闻的工作者在后台跑着,它的名字叫 sysmon ,你可能在某个地方见到过它。我最早是在 gc 中第一次见到了它,当时只知道默认有一个两分钟的 gc 是由它来控制的,那么它究竟还做了什么工作呢?今天我们就来看看它。
LinkinStar
2022/09/01
3520
使用前置音响的固体电影屏幕如何工作
本次演讲来自SMPTE 2019,演讲者是Julien Berry和Pierre Vincent。本次演讲的内容是使用前置音响的固体电影屏幕如何工作,目的是解决音响折中问题。
用户1324186
2020/04/21
6250
如何实现响应式布局大屏幕三等分、中屏幕二等分、小屏幕一等分
使用 Grid 布局可以轻松解决这个问题,如若使用其它方案,控制好等分的同时再控制好间距也是一个十分头疼的问题:
山月
2021/06/16
1.7K0
飞企互联:无生态,不SaaS!
第二届SaaS产业峰会——挖掘SaaS的深度价值12月8日成功在深圳召开。 在“协同办公领域——行业尖峰对话”的圆桌讨论中,飞企互联董事长史玉洁对此分享了自己的看法: 做的不是协同,做的是泛协同 飞企
人称T客
2018/03/26
8250
飞企互联:无生态,不SaaS!
widows 程序无响应判断,程序假死状态
程序无响应判断 dotnet的Process自带Responding属性 IsHungAppWindow系统api(window xp以后api失效) SendMessageTimeout发送窗口消息 通过共享内存,获取程序心跳数据的方式(需要程序写共享内存) FindWIndow遍历窗口,查询特定窗口的错误信息,发送WM_CLOSE关闭(准确率高,权限要求低) Process.GetProcessesByName(Path.GetFileNameWithoutExtension(objSelectItem
sofu456
2020/05/27
2K0
webpack的watch选项不工作原因分析
今天尝试将以前创建的一个前端项目改为webpack编译,该项目使用了VueJS v2.0,原来是编写gulp脚本完成构建的。很自然就直接用vue-cli来搞定这个事了。 使用vue-cli创建项目 因为以前用过webpack,而vue-cli创建的项目底层其实还是使用webpack构建的,所以使用起来还是很简单的。 # 使用yarn,这个命令是跟npm兼容的,但速度快很多,而且可以保证依赖包版本的一致性,强烈推荐 yarn install --global vue-cli vue-cli webpack v
jeremyxu
2018/05/10
4.5K0
点击加载更多

相似问题

如何在颤动中增加SingleScrollChildView的大小?

17

c#中的getResponse不工作。无响应

50

响应媒体屏幕宽度不工作

20

颤动- TextEditingController不工作

19

Turtle图形屏幕无响应

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档