问题标签 [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.

0 投票
1 回答
488 浏览

swift - Vapor 4/Swift:中间件开发

我对 Swift 和 Vapor 完全陌生;

我正在尝试开发一个授权中间件,该中间件是从我的 UserModel(Fluent Model 对象)调用的并且在所需的访问级别(int)和路径(字符串)中过去,并且

  1. 确保用户通过身份验证,
  2. 检查 UserModel.Accesslevel 的实例是否 => 传入的必需访问级别,如果不是,则将用户重定向到“路径”。

我已经尝试了几天,总是很接近,但从来没有完全得到我想要的东西。

我有以下内容(请原谅命名不佳的对象):

我将以下内容添加到我的用户模型中

和这样的路线

路径和所需级别正确传递,但我无法从当前用户获取 AccessLevel 的实例。(我确定我戴上了我的 c++ 帽子,并且从我可以“猜测”的内容来看,即使身份验证已经完成,UserModel 实际上并不是用户的填充实例)

我试图合并使用关联类型传递帐户信息的“SessionAuthenticator”过程。

我的另一个想法是检查用户是否经过身份验证,如果是,我可以安全地假设会话 Cookie 包含我的用户 ID,因此我可以(再次)从数据库中提取用户并从那里检查用户访问级别。

我可能会离开这里,几天后我不知道哪种方式是最好的方法,任何指导将不胜感激。

干杯

0 投票
1 回答
1135 浏览

arrays - Vapor 4/Fluent,具有嵌套数据库查找以返回返回 EventLoopF​​uture 的函数

我正在尝试编写一个接收我的 UserModel 的函数,并执行一些检查以查看用户是否

  1. 被锁住了
  2. 在一段时间内没有尝试过多的登录。

然后返回结果的布尔指示。

查找在我的身份验证过程中工作。但是我想分解确定是否允许用户(尝试)登录的代码,这样我就可以在多个地方使用它而无需重复代码。

但是(对于 Vapor/Swift 来说是新手)我遇到了一个错误,我无法弄清楚我做错了什么: 无法将“EventLoopF​​uture”类型的返回表达式转换为“Bool”类型

错误位于}.all().map {行(单独成一行,因此更容易找到)。

数据库结构方面,我涉及 2 个表:

  • UserAccess 保存我的用户配置文件详细信息(此用户可以进行多少次错误尝试,以及我们在日志中查找登录尝试的时间有多长)
  • UserLog,其中记录了每个用户的登录尝试以及他们何时进行尝试

到目前为止,这是我的代码片段:

任何方向将不胜感激。

0 投票
1 回答
252 浏览

vapor - 在 Vapor 4 中使用 Fluent 进行复杂查询

我想查询在兄弟姐妹字段中包含某些用户的聊天。

简化模型:

我的获取路线:

我明白了[ ERROR ] server: column chats.users does not exist (errorMissingColumn)

我怎样才能以正确的方式做这样的过滤器?

0 投票
2 回答
1299 浏览

vapor - 蒸气 4 流畅。复杂查询、过滤和创建(如果不存在)

我正在尝试查询与两个用户的聊天。如果它存在,我想退货。如果不是,我想与这两个用户创建新的聊天并将其返回。

如果聊天存在,评论会显示失败的地方。

如果您可以展示如何在这种情况下与这两个用户创建新的聊天,也会很有帮助。

简化模型:

0 投票
1 回答
1134 浏览

swift - 与 Vapor 4 的父子关系

我想在 Vapor 4 中建立aLeague和 a之间的父子关系。我可以创建一个就好了,但是当我尝试像这样创建一个新团队时:TeamLeague

我收到此错误:

我只想用从表中引用 a的Teama来初始化 a 。我在 Vapor 3 中进行了这项工作,但在 Vapor 4 中似乎无法做到这一点。league_idLeagueLeagues

请参阅下面的模型和迁移。

League模型:

Team模型:

CreateLeague移民:

CreateTeam移民:

TeamsController

0 投票
1 回答
220 浏览

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 像以前的版本一样允许自定义属性名称,那就容易多了。

我想知道是否有人遇到过这个“问题”?或者有一个解决方法,允许模型继续使用有意义的名称,并且仍然允许育儿正常工作。

我以这个简单的用户数据为例,但肯定其他人使用不同/有意义的列名,让我..烦恼?

任何指导/想法将不胜感激谢谢

0 投票
1 回答
53 浏览

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 类型,但不知道如何添加修复此问题。

任何帮助都非常感谢。

在此处输入图像描述

0 投票
1 回答
131 浏览

vapor - 如何从蒸汽 4 中的连接表中选择所有列?

似乎蒸气添加了新功能eagerLoad并删除了alsoDecode. 对于那些拥有亲子或兄弟关系的人来说很方便。但不适合那些没有关系的人。

我想实现一个树结构,其节点不能(或者我不知道如何)参与关系。节点有一个父节点和许多子节点,它们也是节点。

所以我有这个结构的三个表。

问题是我是否想做

如何编写代码。

0 投票
2 回答
457 浏览

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?):

最大的问题:我找不到PostgreSQLDatabaseinFluentPostgresDriver或 in 的替代品Fluent。或者,也许,应该是解决此任务的另一种方法?

感谢您的阅读,如果您有任何帮助或建议,我将不胜感激!

0 投票
0 回答
164 浏览

swift - 如何使用 Fluent 在 Vapor 中使用字符串 PostgreSQL 查询?

我正在使用 Vapor 4 beta 编写一些 API。我有一个在后台运行的 PostgreSQL 数据库,我想过滤一个表,并检查是否在某个日期间隔内创建了特定行。

我的查询应该是这样的:

该查询适用于数据库(我尝试使用 Postico 客户端),但是我想在 Xcode 中将它与 Fluent 一起使用。

我试过这样的事情:

它不起作用,它说:“无法将 'EventLoopF​​uture' 类型的返回表达式转换为返回类型 'EventLoopF​​uture<[Note]>'”

我怎样才能投射我的结果,或以某种方式解决这个问题?