问题标签 [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 回答
532 浏览

swift - 蒸汽连接到 SQLite 数据库

我正在尝试使用 SQLite 设置 Vapor 3 项目。
configure.swift文件中,我有以下与 sqlite 相关的设置:

在数据库中,我有一个名为 的表posts,我想从以下位置查询并返回所有条目:

数据库表

这是/Sources/App/Models/Post内部的实现:

我还在以下位置添加了迁移configure.swift

routes.swift中,我将posts路线定义如下:

现在,打电话时localhost:8080/posts,我得到:

我没有正确连接数据库吗?
我错过了什么吗?

0 投票
1 回答
379 浏览

swift - MySQL & Vapor 3:无法识别的基本数据包,不支持完整身份验证

我想将我机器上的 MySQL 数据库与 Vapor 3 应用程序连接起来。
我当前的configure.swift文件如下所示:

这工作得很好。但是,由于我需要将我的模型添加到迁移配置中,我还需要添加:

这次运行应用程序时,我看到一条错误消息:

不安全的连接不支持完全身份验证。

经过一番研究,似乎可以通过将密码逻辑从更改为来克服此caching_sha2_password错误mysql_native_password
但是,这给我留下了错误消息:

无法识别的基本数据包。

我该如何解决?

0 投票
1 回答
919 浏览

swift - Vapor 3:使用 wait() 时检测到 Eventloop 错误

我正在努力理解如何批量保存获取的对象并将它们存储到数据库中。将对象存储到数据库后,我想返回查询结果。我无法理解如何使用 EventLoopF​​uture 执行此操作,因为当我打电话时.wait()收到错误消息:

前提条件失败:检测到错误:在 EventLoop 上时不得调用 wait()。

作为我的问题的一个例子:

  • 我需要从外部端点获取一个实体(比如说机场的航班)
  • 该调用的结果需要保存到数据库中。如果航班存在于数据库中,则需要更新,否则创建。
  • 完成后,需要返回数据库中所有航班的列表。

这是我到目前为止得到的,但这给了我一个错误:

所以问题就在网上_ = try? self.storeOrUpdateFlightRecord(flight, airport: airport, on: conn).wait()。我不能打电话wait(),因为它会阻止 eventLoop,但是如果我打电话map或者flatMap我需要反过来返回一个EventLoopFuture<U>( Ubeing Flight),我对此完全不感兴趣。

我想self.storeOrUpdateFlightRecord被叫到结果被忽略。我怎样才能做到这一点?

0 投票
1 回答
335 浏览

mysql - Vapor 3 Fluent MySQL: save on model adds 10 to auto_increment

When I am saving my object to the database, it stores the id of the object with +10. The autoincrement for the table increments by default with 1. When I manually add something to the database, it'll increment with 1.

Am I missing (or my misstake, setting) a setting for FluentMySQL?

The toItem func does nothing more then initiate a new Item:

As you can see, the id is set to nil... which I would guess should store using null while making the insert query.

The result in the database:

MySQL db result

What am I missing?

Update: After following suggestions from this page I've added logging for the queries... and they seem to work as they should. Example of what fluent runs for query:

As you can see, it doesn't set the id in any way. Maybe a MySQL problem?

0 投票
1 回答
835 浏览

swift - Vapor 3:返回模型时,如何轻松也返回子对象

我有一个模型活动,有多个月份:

当我想以最基本的方式返回一个活动时,它不包括月份,因为据我所知,计算属性不是可编码的。

所以,我创建了一个新结构来保存我想要返回的完整对象

然后像这样修改我的路由处理程序:

这确实有效。但是,这样做似乎需要做很多工作和大量样板文件。处理子对象或其他一般计算对象的正常 Swifty“Vapory”方式是什么?现在它似乎归结为你的模型的一堆不同版本(用于创建,用于返回,实际的完整内部模型),然后在它们之间进行转换,但我希望我在这里缺少一些东西?因为很容易忘记将新添加的模型属性也添加到该特殊的公共模型中。

或者至少,如果确实以推荐的方式在模型之间进行转换,是否有一种方法不需要路由处理程序中的所有这些嵌套地图/平面地图?

0 投票
1 回答
404 浏览

vapor - vapor 3 fluent-mysql 连接查询

Vapor 3中如何使用fluent-mysql加入查询和限制查询?例如:

SELECT a.*, b.* ON a.id = b.aid LIMIT 0,10

我找不到这样的例子和文件。

0 投票
1 回答
850 浏览

vapor - Vapor 3:将 Future 对象数组转换为 Future 其他对象数组

我试图为我的问题做一个我能想到的最基本的例子。我有一个Course模型和一个多对多表,User其中还存储了一些额外的属性(progress在下面的示例中)。

现在,当我返回一个Course对象时,我希望 JSON 输出是这样的:

而不是我通常会得到的,这是:

所以我创建了一些额外的模型和一个函数来在它们之间进行转换:

现在,我快到,但我无法studentsQuery从转换EventLoopFuture<[CourseUser]>EventLoopFuture<[Student]>. map我尝试了and的多种组合flatMap,但我不知道如何将一组 Futures 转换为一组不同的 Futures。

0 投票
2 回答
501 浏览

swift - 通过 Vapor Fluent-MySQL 中的迁移更改 VARCHAR 字段

我正在为我的新项目使用Vapor 3andFluentMySQL并希望varchar(N)通过迁移更改字段的最大长度 ( )。我怎样才能做到这一点?

我的项目中有一个模型Word,它的一个字段是sourceIdentifier最大String长度为 12。模型是这样的:

一开始,我认为 5 对领域来说就足够了,并使用这段代码Table为这个模型创建:

如上所示,使用字段创建的表sourceIdentifier及其类型为.varchar(5, characterSet: nil, collate: nil).

现在我想通过迁移增加字段的最大长度。

我也试过MySQLDatabase.update这样:

它没有用;没啥事儿。

如何通过Vapor,FluentMySQL和迁移更改表的结构?

0 投票
1 回答
401 浏览

vapor-fluent - 有没有办法检查记录是否存在?

我正在使用外部身份验证系统对用户进行身份验证。但我想从该外部系统捕获结果,并为成功通过身份验证且尚未在我的本地数据库中的用户创建记录。

我已经为正在工作的外部身份验证系统编写了自定义中间件,但我不知道如何检查用户是否已经存在于我当前的数据库中。我目前使用 FluentSQLite 作为我的后备数据库。

我想做的是

这不适用于 .first(),因为它不返回 Optional。

提前感谢您的任何帮助、想法或建议。

德里克

0 投票
1 回答
173 浏览

swift - 无法使用 Vapor-Fluent 在 Swift 中跨 Web 服务实例持久化数据

我正在使用 Vapor 框架在 Swift 中编写 Web 服务。

我使用 FluentSQLite 来保存数据。我有一个符合 SQLiteModel 和迁移的用户模型。我添加了通过 post 方法创建新用户的路线,并通过如下所示的 get 方法返回用户列表。

在此处输入图像描述

当我第一次点击 get API 时,它返回一个空数组。在我发布一些用户后,我可以得到他们。但是当我停止服务并再次运行时,我无法获取之前保存的用户。

由于我是 Vapor 的新手,我无法弄清楚我在这里缺少什么,所有的在线搜索和文档都没有帮助。最初我在事务中没有保存或查询,在看到文档后我也尝试过,但同样的问题。