问题标签 [server-side-swift]
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 3 和 Fluent 的服务器端 Swift 中的 PostgreSQL
我正在使用 Vapor 3 在 Swift 中编写 Web 服务。我正在使用FluentPostgreSQL
数据持久性。我有一个符合两者的用户模型PostgreSQLModel, PostgreSQLMigration
。应用程序正确构建。但是,当我运行该应用程序时,我收到以下错误。
这就是我的configure.swift
样子。
如您所见,我之前使用 SQLite,现在我尝试将 PostgreSQL 用于某些模型,包括 User。当我只是 SQLite 时,我没有收到任何错误。
swift - 了解 Vapor-Fluent 中的迁移(服务器端 Swift)
我正在使用 Vapor 框架在 Swift 中编写 Web 服务。
我有模型命名Item
。最初它只有 name 和 id 属性。
在我为模型配置控制器并添加路由后,当我点击 post Item 请求时,我得到的错误为Model.defaultDatabase is required to use as DatabaseConnectable
. 我认为错误是因为我没有添加Item
到Migrations
in并且在configure.swift
符合.Item
PostgreSQLMigration
现在,我可以点击发布请求并在数据库中创建项目。
因此,我了解该Migration
协议为模型创建了默认架构,并将新表添加到数据库中,并将模型的属性作为列。
现在我想向price
我的 Item 类添加一个属性。现在,当我点击发布请求时,我得到的错误为column "price" of relation "Item" does not exist
. 我假设迁移协议将能够识别架构更改和我的表的列(这是我在 iOS 应用程序中使用 Realm 时所习惯的)。但是我错了,我通读了迁移文档并在迁移中实现了prepare
和revert
方法,如下所示。
我仍然对同样的错误感到震惊column "price" of relation "Item" does not exist
。我在这里想念什么?我的迁移代码是否正确?
另外,我知道如果不对模型进行任何更改,我可以注释掉迁移配置,因为它们不需要在我每次运行服务时都运行。那是对的吗?
swift - 无法在 gCloud 中部署 Swift Vapor 应用程序
我有一个在本地运行良好的 Swift Vapor 应用程序。我已经用 Postman 测试了端点。
当我尝试将应用程序部署到 Google Cloud 时,我收到以下错误。
错误:(gcloud.app.deploy)错误响应:[9]应用程序启动错误:致命错误:在顶层引发错误:
NIO.ChannelError.connectFailed(NIO.NIOConnectionError(host: "localhost", port: 5432, dnsAError: nil, dnsAAAAError: nil, connectionErrors: [NIO.SingleConnectionFailure(target: [IPv6]localhost/::1:5432, error: connect(descriptor:addr:size:) failed: Cannot assign requested address (errno: 99)), NIO.SingleConnectionFailure(target: [IPv4]localhost/127.0.0.1:5432, error: connection reset (error set): Connection refused (errno: 111))])):文件 /home/buildnode/jenkins/workspace/oss-swift-5.0-package-linux-ubuntu-14_04/swift/stdlib/public/core/ErrorType.swift,第 200 行
我不知道我错过了什么。这是我的码头文件。
这是我的 app.yaml。
我在这里想念什么?一些只有错误的谷歌搜索表明 Postgres 可能丢失。我在我的应用程序中使用 FluentPostgreSQL。在那种情况下,如何在我的容器中安装 postgres?或者我还应该做什么?
swift - Swift 5 Ubuntu 16.04 崩溃与 dateComponents
这是我的代码:
我在 Docker 下的 Ubuntu 16.04 上运行。结果是:
看来 dateComponents 调用正在崩溃。
我的 Docker 容器基于 https://github.com/apple/swift-docker/blob/0aafffef619fb3b1824c968cbbe2fba4ba41bd26/5.0/ubuntu/16.04/Dockerfile
建议?
更新 1) 我刚刚在 Virtual box 下运行的 Ubuntu 16.04 系统上复制了这个,并安装了适用于 Ubuntu 16.04 的 Swift 5.0.1 版本:https ://swift.org/builds/swift-5.0.1-release/ubuntu1604/ swift-5.0.1-RELEASE/swift-5.0.1-RELEASE-ubuntu16.04.tar.gz
swift - 在 Vapor 中等待异步任务完成请求
我正在使用服务器端 swift 框架 Vapor 编写一个 API。我的模型非常简单。我有一个Workout
表,它与Circuit
表具有对多关系,与表具有对多关系Exercise
。当 api 使用者创建一个锻炼时,json 包含锻炼中的所有电路和锻炼。这是一个例子:
我遇到的问题是当用户在多个电路中进行相同的练习时,会创建重复的练习。我在创建新练习之前查询了数据库,但似乎保存都是异步发生的,这使我无法在保存新练习之前检测到数据库中具有相同 ID/标题的现有练习。这是我的代码:
有人看到我在这里缺少什么吗?Future
有没有办法在开始新的之前等待 a完成Future
?我是 Vapor 的新手,所以我对 Vapor 的 fluent api 不太熟悉。
heroku - 在 Heroku 上运行 Swift:加载共享库时出错
我正在尝试将 Swift 应用程序部署到 Heroku。我正在使用 Swift 5.0.2 和 Heroku Stack 18。这个应用程序以前使用 Swift 3.0 和 Heroku Stack 16。
我不确定这个错误到底在告诉我什么,所以我不知道从哪里开始修复它。我正在使用 Heroku 构建包的一个分支,因为它甚至不支持他们自己的 Stack 18。https://github.com/onuniverse/heroku-buildpack-swift
swift - Vapor 3 - 如何从 Leaf 模板表单填充模型的数组属性
我有一个Group、User和一个App模型。在我的 Group 模型中,我有一个属性var apps: [App]
,并且我创建了一个兄弟关系 bw Group 和 User。
在我的 WebsiteController 中,我有 2 个处理程序:
createGroupHandler
在/groups/create处理GET请求createGroupPostHandler
在/groups/create处理POST请求
我的问题是,在我的createGroup.leaf模板中的表单中选择应用程序对象后,当我创建新组时,没有应用程序被填充到我的应用程序数组中。
我创建了结构来表示在我中呈现的上下文createGroupHandler
并处理在 post 请求中传递的数据createGroupPostHandler
应用程序已正确加载到表单中,但尽管如下图所示选择了它们,但它们并未添加到数组中
我的createGroupPostHandler
样子如下。我不知道如何在apps: [App]
创建组时获取选定的应用程序并填充我的数组是我的问题,我觉得这是我应该这样做的地方,但我不知道如何从 Leaf 模板中获取它.
swift - 将我的 Fluent 模型链接到预先存在的数据库表
我一直在尝试将我的 PostgreSQL 数据库链接到一个 Swift Vapor 项目,所以我创建了到它的路由。我要访问的第一个表是my_database
calls中的表users
。它具有属性user_id
(主整数键)和created_on
(带有时区的时间戳)。
我已将我的 Vapor 项目链接到,my_database
以便我可以创建新模型。但是,如果我想访问预先存在的表怎么办users
。以下是我从文档和一些教程中拼凑出来的内容:
我的初始模型:
我的迁移(我认为这只是一个“空白”迁移,只是为了将项目挂到表上?):
还有我的配置:
非常感谢任何指导!
swift - 服务器端 Swift:导航栏切换在 Vapor 4 Leaf + Bootstrap 中不起作用
配置:
蒸气 4 | 更新的 beta 版本和软件包 | macOS Catalina v.10.15.3 | XCode 11.4 测试版 2 | 引导 CDN 4.4.1
我无法切换导航栏按钮。我不确定这是否是 Leaf 中的错误。我以正确的顺序实现了 Bootstrap 和 CSS。尝试运行此代码。不要忘记将浏览器窗口的大小调整为移动设备或平板电脑视图以显示导航栏切换按钮。这是我的叶子代码:
// base.leaf
// index.leaf
在 Safari 的 Inspect 元素中,我的 html 文档以正确的顺序呈现。但是,我不知道为什么单击导航栏切换不起作用。
swift - 在蒸汽 4 响应中手动修改模型属性值
我有一个蒸汽 4 应用程序。我从数据库进行查询以获取一些项目,并且我想在完成请求之前根据返回的值执行一些手动计算。这是我想要实现的示例代码。
问题是这些手动更改无法响应。在这种情况下someValue
属性。
谢谢。