问题标签 [vapor-fluent]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
swift - Vapor 4/Swift:中间件开发
我对 Swift 和 Vapor 完全陌生;
我正在尝试开发一个授权中间件,该中间件是从我的 UserModel(Fluent Model 对象)调用的并且在所需的访问级别(int)和路径(字符串)中过去,并且
- 确保用户通过身份验证,
- 检查 UserModel.Accesslevel 的实例是否 => 传入的必需访问级别,如果不是,则将用户重定向到“路径”。
我已经尝试了几天,总是很接近,但从来没有完全得到我想要的东西。
我有以下内容(请原谅命名不佳的对象):
我将以下内容添加到我的用户模型中
和这样的路线
路径和所需级别正确传递,但我无法从当前用户获取 AccessLevel 的实例。(我确定我戴上了我的 c++ 帽子,并且从我可以“猜测”的内容来看,即使身份验证已经完成,UserModel 实际上并不是用户的填充实例)
我试图合并使用关联类型传递帐户信息的“SessionAuthenticator”过程。
我的另一个想法是检查用户是否经过身份验证,如果是,我可以安全地假设会话 Cookie 包含我的用户 ID,因此我可以(再次)从数据库中提取用户并从那里检查用户访问级别。
我可能会离开这里,几天后我不知道哪种方式是最好的方法,任何指导将不胜感激。
干杯
arrays - Vapor 4/Fluent,具有嵌套数据库查找以返回返回 EventLoopFuture 的函数
我正在尝试编写一个接收我的 UserModel 的函数,并执行一些检查以查看用户是否
- 被锁住了
- 在一段时间内没有尝试过多的登录。
然后返回结果的布尔指示。
查找在我的身份验证过程中工作。但是我想分解确定是否允许用户(尝试)登录的代码,这样我就可以在多个地方使用它而无需重复代码。
但是(对于 Vapor/Swift 来说是新手)我遇到了一个错误,我无法弄清楚我做错了什么: 无法将“EventLoopFuture”类型的返回表达式转换为“Bool”类型
错误位于}.all().map {行(单独成一行,因此更容易找到)。
数据库结构方面,我涉及 2 个表:
- UserAccess 保存我的用户配置文件详细信息(此用户可以进行多少次错误尝试,以及我们在日志中查找登录尝试的时间有多长)
- UserLog,其中记录了每个用户的登录尝试以及他们何时进行尝试
到目前为止,这是我的代码片段:
任何方向将不胜感激。
vapor - 在 Vapor 4 中使用 Fluent 进行复杂查询
我想查询在兄弟姐妹字段中包含某些用户的聊天。
简化模型:
我的获取路线:
我明白了[ ERROR ] server: column chats.users does not exist (errorMissingColumn)
我怎样才能以正确的方式做这样的过滤器?
vapor - 蒸气 4 流畅。复杂查询、过滤和创建(如果不存在)
我正在尝试查询与两个用户的聊天。如果它存在,我想退货。如果不是,我想与这两个用户创建新的聊天并将其返回。
如果聊天存在,评论会显示失败的地方。
如果您可以展示如何在这种情况下与这两个用户创建新的聊天,也会很有帮助。
简化模型:
swift - 与 Vapor 4 的父子关系
我想在 Vapor 4 中建立aLeague
和 a之间的父子关系。我可以创建一个就好了,但是当我尝试像这样创建一个新团队时:Team
League
我收到此错误:
我只想用从表中引用 a的Team
a来初始化 a 。我在 Vapor 3 中进行了这项工作,但在 Vapor 4 中似乎无法做到这一点。league_id
League
Leagues
请参阅下面的模型和迁移。
League
模型:
Team
模型:
CreateLeague
移民:
CreateTeam
移民:
TeamsController
:
vapor - 需要 ID 属性名称的 Vapor 4 关系和模型
我正在尝试在应用程序(Vapor 4)中设置育儿,虽然它可以实现,但我遇到了这个问题,或者至少是一个限制,导致在模型中使用的属性名称不太有意义。
Vapor 4 要求将 @ID 属性命名为 'id' (var id: ...),而在以前的版本中,属性名称是可定义的,因此名称更有意义。
例如 User 表:我们的用户数据使用 Username 作为唯一键(不是主键),因此 User 模型定义如下:
有意义且可读,并且在应用程序中使用模型的任何地方,开发人员都知道 Id 字段是 sysid 而用户名是用户名。
规则和配置文件表中的外键使用用户名作为外键(由于遗留原因)。改变它虽然是分贝和应用程序目前是不可能的。
自从最初的实现以来,我一直在阅读并意识到使用关系(而不是过滤器和连接)的好处。
要在 Vapor 4 中使用关系,我必须将模型定义更改为:
我的模型定义意义不大(尽管它确实有效):
当然,这意味着尽管代码 .username 现在需要更改为 .id ,但这远不那么不言自明。
在 Vapor 3 中,我们可以将 ID 属性名称定义为任何内容。如果 Fluent/Vapor 4 像以前的版本一样允许自定义属性名称,那就容易多了。
我想知道是否有人遇到过这个“问题”?或者有一个解决方法,允许模型继续使用有意义的名称,并且仍然允许育儿正常工作。
我以这个简单的用户数据为例,但肯定其他人使用不同/有意义的列名,让我..烦恼?
任何指导/想法将不胜感激谢谢
swift - 将 Swift Vapor 项目升级到 Swift 4 / Catalina 会导致大量未声明的类型
我有一个 swift vapor 项目,在 Mojave 中使用 swift 3 运行良好,但现在在 Catalina 上我遇到了一些错误,所以我试图更新它。
我做的第一件事是更新 fluent 和 vapor swift 包: package(url: " https://github.com/vapor/fluent.git ", .upToNextMajor(from: "2.4.0")), package(网址:“ https://github.com/vapor/vapor.git ”,.upToNextMajor(来自:“2.1.0”)),
当我尝试构建项目时,我得到了一堆 Crypto 包的未解析类型。如果我没记错的话,这是 OpenSSL 类型,但不知道如何添加修复此问题。
任何帮助都非常感谢。
vapor - 如何从蒸汽 4 中的连接表中选择所有列?
似乎蒸气添加了新功能eagerLoad
并删除了alsoDecode
. 对于那些拥有亲子或兄弟关系的人来说很方便。但不适合那些没有关系的人。
我想实现一个树结构,其节点不能(或者我不知道如何)参与关系。节点有一个父节点和许多子节点,它们也是节点。
所以我有这个结构的三个表。
问题是我是否想做
如何编写代码。
xcode - 没有 http 请求的 Vapor 4 PostgreSQL CRUD
我正在使用 Swift 5 和 Vapor 4 编写后端,数据库是 PostgreSQL 12。我有一个问题:如何在本地与数据库 (CRUD) 交互,而无需 POST 或 GET 请求?所有教程都展示了如何再次通过 HTTPS 仅基于 Request 进行 CRUD。我已经问过这个问题:Vapor 3 PostgreSQL CRUD without requests http ,但这 不是一个重复的问题,Vapor 4 的工作方式完全不同!请查看我当前的 Vapor 3 工作班(基于此答案:Is is possible to use Vapor 3 Postgres Fluent in a Standalone script?):
最大的问题:我找不到PostgreSQLDatabase
inFluentPostgresDriver
或 in 的替代品Fluent
。或者,也许,应该是解决此任务的另一种方法?
感谢您的阅读,如果您有任何帮助或建议,我将不胜感激!
swift - 如何使用 Fluent 在 Vapor 中使用字符串 PostgreSQL 查询?
我正在使用 Vapor 4 beta 编写一些 API。我有一个在后台运行的 PostgreSQL 数据库,我想过滤一个表,并检查是否在某个日期间隔内创建了特定行。
我的查询应该是这样的:
该查询适用于数据库(我尝试使用 Postico 客户端),但是我想在 Xcode 中将它与 Fluent 一起使用。
我试过这样的事情:
它不起作用,它说:“无法将 'EventLoopFuture' 类型的返回表达式转换为返回类型 'EventLoopFuture<[Note]>'”
我怎样才能投射我的结果,或以某种方式解决这个问题?