是否可以在独立脚本中使用 Vapor 3 Postgres Fluent?

2023-12-06

我正在试验一个独立的脚本,它将使用 Vapor 和 Fluent 查询 Postgres 数据库。在普通的 Vapor API 应用程序中,这可以简单地通过以下方式完成:

router.get("products") { request in
    return Product.query(on: request).all()
}

然而,在独立脚本中,由于没有“请求”,我陷入了用什么来替换“请求”或DatabaseConnectable和。这就是我陷入困境的地方:

import Fluent
import FluentPostgreSQL

let databaseConfig = PostgreSQLDatabaseConfig(hostname: "localhost",
                                              username: "test",
                                              database: "test",
                                              password: nil)

let database = PostgreSQLDatabase(config: databaseConfig)

let foo = Product.query(on: <??WhatDoIPutHere??>)

我尝试创建一个符合以下条件的对象DatabaseConnectable,但无法弄清楚如何正确地使该对象符合要求。


您将需要创建一个事件循环组才能发出数据库请求。 SwiftNIO 的MultiThreadedEventLoopGroup对此有好处:

let worker = MultiThreadedEventLoopGroup(numberOfThreads: 2)

您可以根据需要更改使用的线程数。

现在您可以使用该工作程序创建与数据库的连接:

let conn = try database.newConnection(on: worker)

该连接是未来的,因此您可以map它并在您的查询中传递连接:

conn.flatMap { connection in
    return Product.query(on: connection)...
}

确保在完成工作后关闭工作程序shutdownGracefully(queue:_:)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以在独立脚本中使用 Vapor 3 Postgres Fluent? 的相关文章

  • 快速 Firebase 在异步任务中返回

    我在 swift 2 中遇到了适用于 iOS 的 Firebase SDK 的问题 我正在尝试将图片设置为从 Firebase 存储下载 当我调用该函数时 它返回 nil 我认为这是因为 Firebase sdk 提供的下载任务是异步的 因
  • Google Analytics Pod 安装了太多依赖项

    我刚刚添加了 Google Analytics Pod 如中所述他们的 iOS 开发者指南 https developers google com analytics devguides collection ios v3 with pod
  • 导航栏的横向视图问题

    默认导航栏高度为 64 但更改后 其横向导航栏高度的方向更改为 28 我想设置修复所有方向的导航栏大小 您可以添加方向观察者 NotificationCenter default addObserver self selector sele
  • 协议扩展,不符合协议

    我正在创建一个名为MyFramework含有LoginProtocol swift它有一些默认行为 import UIKit public protocol LoginProtocol func appBannerImage gt UIIm
  • iOS CoreBluetooth:状态保存和恢复

    希望在这里得到一些意见 在我当前的 iOS 项目中 我使用 CoreBluetooth 和 swift 该应用程序可以在后台使用 CoreBluetooth 进行通信 这基本上可以工作 外设需要与 iOS 设备建立有效连接才能按预期工作 每
  • 是否可以在 Objective-C 中调用 Swift 便利初始化器

    假设我在 Swift 中有一个方便的初始化器 extension UIImage convenience init bundleNamed name String let bundle NSBundle forClass Foo self
  • IOS:init(CGImage) 的使用不明确

    我正在尝试转换CGImage into a CIImage 但是 它不起作用 这行代码 let personciImage CIImage CGImage imageView image CGImage 抛出以下错误 init CGImag
  • Xcode UI 测试 UIKeyInput typeText

    在 Xcode UI 测试期间 我该如何insertText for a UIView符合UIKeyInput 我创建了一个CodeInputView https github com acani CodeInputView符合UIKeyI
  • 在 Swift 中将单个整数值视为一个范围

    我需要验证字符串的长度 字符计数允许的值为 6 9 个字符 12个字符 15 个字符 所有具有不同字符数的字符串均无效 因此 我想创建一个 Swift 函数 它接受多个范围并计算字符串 extension String func evalu
  • Swift 中的 titleLabel.text 与 currentTitle

    我正在尝试用 Swift 制作一个简单的计算器 我想获取我创建的按钮上的 文本 本教程中的讲师正在使用一个属性 IBAction func appendDigit sender UIButton let digit sender curre
  • 如何在 X 秒后更改 NSTimer 的 NSTimeInterval?

    我正在 swift 2 中制作一个应用程序 其中有两个计时器 10 秒后我希望另一个计时器走得更快 我尝试过这样做 但它不起作用 我正在尝试更改 vartime to 1 IBOutlet var displayTimeLabel UILa
  • Swift 无法将表达式的类型“Void”转换为类型“String!”

    我正在尝试使用一段示例代码这篇 NSHipster 文章 http nshipster com ios8 大约在页面的中间位置 var inputStream NSInputStream var outputStream NSOutputS
  • iOS WebView 空白

    我已使用 YouTube 的标准嵌入网址在我的 iOS 8 3 应用程序中嵌入了 YouTube 视频 sample http www youtube com embed HkAK9QRe4ds 它按预期工作 但看起来很奇怪 那个白色间隙
  • 检查url图片是否存在

    我正在尝试使用 if 语句检查 url 图像是否存在 然而 当尝试通过错误的图像网址测试它时 它会不断返回 致命错误 在解包可选值时意外发现 nil code var httpUrl subJson image url stringValu
  • IOS - 如何创建具有模糊背景的 Facebook 反应栏?

    虽然这周可能不会复制 Facebook 的某些设计 但我希望能够设计我自己的下面的反应指示器视图版本 我有三个UIImageViews 排列在与上面相同的位置 问题是 与 Facebook 不同 背景颜色可能会改变 即位于UIBlurEff
  • 在从初始化器返回 nil 之前,必须初始化类实例的所有存储属性

    尽管我不断收到上述消息 但我正在尝试在课堂上使用此代码 let filePath NSString let fileHandle NSFileHandle let totalFileLength CUnsignedLongLong init
  • 在 DecodingError 中采用 CustomNSError

    我正在使用 Crashlytics 编写一个错误记录器 并且遇到了一个问题 这个问题让我质疑我对协议和动态调度的理解 使用 Crashlytics 记录非致命错误时 API 需要一个符合错误的对象和一个可选的用户信息字典 我现在正在查看 J
  • 查询链接到 GeoFire 的 firebase 数据

    读完这些问题后 将 Geofire 位置与 Firebase 条目关联 https stackoverflow com questions 33885733 associate geofire location with firebase
  • didDeselectRowAtIndexPath indexPath 为 nil

    我有一个表视图控制器 它实现了 TableView 委托方法 public override func tableView tableView UITableView didSelectRowAtIndexPath indexPath NS
  • Xcode 调试器显示错误的变量值

    我之前问过类似的问题here https stackoverflow com q 53092448 1187415 这个版本有更简单的例子 更新摘要 Xcode 在调试器变量部分中为每个字符串显示 FAIL Swift print 语句显示

随机推荐