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

swift - 加入 Fluent in Vapor 时崩溃

我有两个模型,它们有一对多的关系。这是我的课。

预订

产品

现在我想获取用户的所有预订,并且每次预订我都想获取产品信息。因此,为此我尝试加入BookingProduct表,但这会引发异常。

致命错误:“试试!” 表达式意外引发错误:⚠️ CoreError: Parent<Booking, Product>does not conform to ReflectionDecodable. - id:CoreError.ReflectionDecodable:文件 /BuildRoot/Library/Caches/com.apple.xbs/Sources/swiftlang_Fall2018/swiftlang_Fall2018-1000.11.42/src/swift/stdlib/public/core/ErrorType.swift,第 184 行程序以退出代码:9

这是我的加入代码。

0 投票
0 回答
174 浏览

swift - Vapor 3,用另一个表中的数据预填充表

我正在尝试使用 Vapor 3 和 Vapor fluent 预先填充表格。我是蒸汽新手

我正在尝试Sharedkeys使用来自Platform. 我已经设法查询Platform。但是,我正在努力填充SharedKeys

所以每个platform人都会有一个shared key

我在下面包含了一个示例,但我没有运气。

在这一行 let sharedKeys = platforms.map { platform in 我得到一个编译错误 Unable to infer complex closure return type: add explicit type to disambiguate

然后我意识到map正在返回[T],无法找到创建Future<SharedKey>而不是[SharedKey]

这是我的编码示例,请随时批评!

平台模型

共享密钥模型

试图填充sharedKey

我期待的是变量keysFuture类型Future<[SharedKey]>不是[SharedKey]

编辑:

我已使用此示例进行预填充Platformhttps ://mihaelamj.github.io/Pre-populating%20a%20Database%20with%20Data%20in%20Vapor/

将字符串填充到表格中很容易,但尝试填充shared keyplatform我来说是一个挑战。

我意识到我需要 Sharedkeys 才能[EventLoopFuture<Void>] 更新以下内容:

但是,这会返回,因为EventLoopFutrue<[EventLoopFutrue<Void>]>有没有办法解开这个?

我只需要附加[EventLoopFutrue<Void>]futures上面的链接(https://mihaelamj.github.io

0 投票
1 回答
655 浏览

swift - 在 Vapor 中等待异步任务完成请求

我正在使用服务器端 swift 框架 Vapor 编写一个 API。我的模型非常简单。我有一个Workout表,它与Circuit表具有对多关系,与表具有对多关系Exercise。当 api 使用者创建一个锻炼时,json 包含锻炼中的所有电路和锻炼。这是一个例子:

我遇到的问题是当用户在多个电路中进行相同的练习时,会创建重复的练习。我在创建新练习之前查询了数据库,但似乎保存都是异步发生的,这使我无法在保存新练习之前检测到数据库中具有相同 ID/标题的现有练习。这是我的代码:

有人看到我在这里缺少什么吗?Future有没有办法在开始新的之前等待 a完成Future?我是 Vapor 的新手,所以我对 Vapor 的 fluent api 不太熟悉。

0 投票
2 回答
538 浏览

vapor - 在 Docker 上构建的 Vapor + PostgreSQL + Nginx 无法正常运行

我使用 docker 为一个项目编写 Vapor、PostgreSQL 和 Nginx,我的 docker-compose.yml 是这样的:

我运行docker-compose up启动所有容器后,进入vapor的容器构建&&运行项目,控制台会提示错误:

然后我在本地机器上运行 vapor 项目并保持 psql 容器运行,它可以正常工作,例如完成第一次模型迁移。

我的 docker 配置或其他配置有什么错误吗?

0 投票
2 回答
1112 浏览

swift - 在 Vapor 的迁移中添加默认值

如何在流式迁移中为非可选字段添加默认值?我目前有这个错误:

我唯一的选择是

编辑:感谢蒂姆的回答,解决方案是:

0 投票
0 回答
79 浏览

mysql - Vapor 3 - 部署到 GCP App Engine 时 Fluent MySQL 上的错误响应 9

尝试将我的 Vapor 项目部署到 GCP App Engine 时,我遇到了一个奇怪的错误。我之前能够部署它,但这个错误只是突然开始。我相信这与我的 Fluent 迁移有关,但似乎不知道如何查明这个问题……有没有人知道为什么我的迁移在以前工作时可能会突然失败?我按照本教程在 App Engine 上安装它:https ://medium.com/swift2go/serverless-google-app-engine-flex-docker-runtime-cloud-sql-backend-with-swift-vapor-web- alfian-c8310acfea0d

我已经看过这个 stackOverflow 问题,但它与我的问题不同:Google App Engine Deploy Error Code 9

在此处输入图像描述

0 投票
1 回答
336 浏览

mysql - 强制 Fluent 迁移以重新创建删除的表 - 将 Fluent 与 Vapor 3 iOS Swift MySQL 一起使用

我将 Vapor 3 用于一些服务器端 Swift,使用 Fluent 插件来处理数据库/模型管理,下面是 MySQL。

我正在开发中,想强制迁移器重新创建一个表,所以我在命令行上进入 mysql 并做了:

但是,重新运行,迁移不会重新创建表。它有无数列和很多约束,所以我真的不想手动完成。

0 投票
1 回答
531 浏览

swift - 如何从 Vapor 3 中的 JSON 响应中保存父子关系

我正在使用Vapor 3开发 REST API 。此 API 使用另一个 API 创建稍后将由应用程序使用的内容。所以我创建了一个从这个 API(联赛和赛季)获取内容并将它们存储在我的 MySQL 数据库中的函数。API 的响应还包含我也想存储的嵌套对象,如果可能的话都在同一个请求中。这是 API 响应:

这是模型:

这是执行请求并存储在数据库上的函数。

问题是:可以保存父子关系吗?我必须使用解码/编码功能手动完成吗?我确实实现了编码/解码并创建了联赛,但不知道如何创建赛季以及如何在执行时保存所有内容league.create(orUpdate: true, on: connection)

任何帮助都将不胜感激。

0 投票
2 回答
814 浏览

swift - Vapor 3 - 如何在保存对象之前检查类似的电子邮件

我想创建一条路线让用户更新他们的数据(例如更改他们的电子邮件或用户名)。为了确保用户不能使用与另一个用户相同的用户名,我想检查数据库中是否已经存在具有相同用户名的用户。

我已经使用户名在迁移中唯一。

我有一个看起来像这样的用户模型:

这是我要使用它的一段代码:

我可以这样做(请参阅下一个片段),但这似乎是一个奇怪的选择,因为当必须执行更多检查(例如,在更新用户的情况下)时,它需要大量嵌套。


正如其中一个答案所建议的那样,我尝试添加错误中间件(请参阅下一个片段),但这并没有正确捕获错误(也许我在代码中做错了 - 刚从 Vapor 开始)。

0 投票
2 回答
484 浏览

swift - Vapor 3 PostgreSQL CRUD 没有请求 http

我正在使用 Xcode 11.2 和 Swift 5.1 基于 Vapor 3.1.10 创建后端,数据库是 PostgreSQL 12。我有一个问题:如何在没有 POST 和 GET 请求的情况下与数据库(CRUD)交互。所有教程都展示了如何仅基于请求通过 HTTPS 进行 CRUD。但是,如果我的应用需要在不与网络交互的情况下将某些内容保存在数据库中怎么办?看我的代码:

经典的写或读方法是:

如何替换req到我可以在本地创建的另一个后台安全线程?

例如:

如何更换<#T##DatabaseConnectable#>

我将感谢任何帮助或建议。