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

0 投票
1 回答
403 浏览

swift - 数据库不存在 - 使用 Vapor 3 和 Fluent 的服务器端 Swift 中的 PostgreSQL

我正在使用 Vapor 3 在 Swift 中编写 Web 服务。我正在使用FluentPostgreSQL数据持久性。我有一个符合两者的用户模型PostgreSQLModel, PostgreSQLMigration。应用程序正确构建。但是,当我运行该应用程序时,我收到以下错误。

这就是我的configure.swift样子。

如您所见,我之前使用 SQLite,现在我尝试将 PostgreSQL 用于某些模型,包括 User。当我只是 SQLite 时,我没有收到任何错误。

0 投票
1 回答
1407 浏览

swift - 了解 Vapor-Fluent 中的迁移(服务器端 Swift)

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

我有模型命名Item。最初它只有 name 和 id 属性。

在我为模型配置控制器并添加路由后,当我点击 post Item 请求时,我得到的错误为Model.defaultDatabase is required to use as DatabaseConnectable. 我认为错误是因为我没有添加ItemMigrationsin并且在configure.swift符合.ItemPostgreSQLMigration

现在,我可以点击发布请求并在数据库中创建项目。

因此,我了解该Migration协议为模型创建了默认架构,并将新表添加到数据库中,并将模型的属性作为列。

现在我想向price我的 Item 类添加一个属性。现在,当我点击发布请求时,我得到的错误为column "price" of relation "Item" does not exist. 我假设迁移协议将能够识别架构更改和我的表的列(这是我在 iOS 应用程序中使用 Realm 时所习惯的)。但是我错了,我通读了迁移文档并在迁移中实现了preparerevert方法,如下所示。

我仍然对同样的错误感到震惊column "price" of relation "Item" does not exist。我在这里想念什么?我的迁移代码是否正确?

另外,我知道如果不对模型进行任何更改,我可以注释掉迁移配置,因为它们不需要在我每次运行服务时都运行。那是对的吗?

0 投票
1 回答
520 浏览

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?或者我还应该做什么?

0 投票
1 回答
124 浏览

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

0 投票
1 回答
655 浏览

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

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

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

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

0 投票
1 回答
563 浏览

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

0 投票
1 回答
637 浏览

swift - Vapor 3 - 如何从 Leaf 模板表单填充模型的数组属性

我有一个GroupUser和一个App模型。在我的 Group 模型中,我有一个属性var apps: [App],并且我创建了一个兄弟关系 bw Group 和 User。

在我的 WebsiteController 中,我有 2 个处理程序:

  1. createGroupHandler在/groups/create处理GET请求
  2. createGroupPostHandler在/groups/create处理POST请求

我的问题是,在我的createGroup.leaf模板中的表单中选择应用程序对象后,当我创建新组时,没有应用程序被填充到我的应用程序数组中。

我创建了结构来表示在我中呈现的上下文createGroupHandler并处理在 post 请求中传递的数据createGroupPostHandler

应用程序已正确加载到表单中,但尽管如下图所示选择了它们,但它们并未添加到数组中在此处输入图像描述

我的createGroupPostHandler样子如下。我不知道如何在apps: [App]创建组时获取选定的应用程序并填充我的数组是我的问题,我觉得这是我应该这样做的地方,但我不知道如何从 Leaf 模板中获取它.

这就是我的 createGroup.leaf 的样子:在此处输入图像描述

0 投票
1 回答
123 浏览

swift - 将我的 Fluent 模型链接到预先存在的数据库表

我一直在尝试将我的 PostgreSQL 数据库链接到一个 Swift Vapor 项目,所以我创建了到它的路由。我要访问的第一个表是my_databasecalls中的表users。它具有属性user_id(主整数键)和created_on(带有时区的时间戳)。

我已将我的 Vapor 项目链接到,my_database以便我可以创建新模型。但是,如果我想访问预先存在的表怎么办users。以下是我从文档和一些教程中拼凑出来的内容:

我的初始模型:

我的迁移(我认为这只是一个“空白”迁移,只是为了将项目挂到表上?):

还有我的配置:

非常感谢任何指导!

0 投票
2 回答
430 浏览

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 文档以正确的顺序呈现。但是,我不知道为什么单击导航栏切换不起作用。

0 投票
1 回答
159 浏览

swift - 在蒸汽 4 响应中手动修改模型属性值

我有一个蒸汽 4 应用程序。我从数据库进行查询以获取一些项目,并且我想在完成请求之前根据返回的值执行一些手动计算。这是我想要实现的示例代码。

问题是这些手动更改无法响应。在这种情况下someValue属性。

谢谢。