是否可以在独立脚本中使用 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? 的相关文章

  • Swift:将字符串转换为十六进制颜色代码

    我已经从数据库生成了用户 ID 格式类似于 XzSYoKJaqKYREkdB2dgwt0fLOPP2 我想用它来创建 UIColor 我找到了几个解决方案 https github com yeahdongcn UIColor Hex Sw
  • 在 Swift 中寻找“退出”等价物[重复]

    这个问题在这里已经有答案了 我尝试把exit 0 在一个小型测试 命令行 程序中 Xcode 给出了一条错误消息 指出Use of unresolved identifier exit 这让我很困惑 因为这个问题 https stackov
  • Swift 完成处理程序语法

    此代码用于回答此处的问题 如何在 Swift 中发出 HTTP 请求 https stackoverflow com questions 24016142 how to make an http request in swift let u
  • Xcode 8 beta“错误”对于这种情况下的类型查找不明确

    根据这篇文章 我需要指定模块来查找对象类型 在此上下文中 方法 对于类型查找不明确 Alamofire 中的错误 https stackoverflow com questions 33543597 method is ambiguous
  • 如何在 iOS 上压缩 Realm DB?

    我想定期压缩 iOS 上的 Realm 实例以回收空间 我认为该过程是将数据库复制到临时位置 然后将其复制回来并使用新的default realm 文件 我的问题是Realm 其行为就像单例并回收对象 因此我无法真正关闭它并告诉它打开新的
  • 如何使 SFSpeechRecognizer 在 macOS 上可用?

    我正在尝试使用 Apple 的语音框架在 macOS 10 15 1 上进行语音识别 在 macOS 10 15 之前 语音识别仅在 iOS 上可用 但根据文档 https developer apple com documentation
  • 检查定位服务是否开启

    我一直在对 CoreLocation 进行一些研究 最近 我遇到了一个在其他地方 但在 Objective C 和 iOS 8 中 已经讨论过的问题 我觉得问这个问题有点傻 但是如何在 iOS 9 上使用 swift 检查是否启用了位置服务
  • 我如何从子视图导航到 mainviewcontroller

    我刚刚开始使用 swift 我创建了一个子视图 上面有一个按钮 我想使用该按钮将我带到我的主视图控制器 我对不同的按钮使用了相同的功能 但是在同一文件中具有一个功能允许该按钮工作 代码如下 var playAgainButton UIBut
  • 使用完成处理程序在 Swift 中调用连续动画

    我正在制作一个可以显示化学反应动画的应用程序 每个原子都是一个 SCNSphere 并通过 SCNActions 进行动画处理 我尝试使用 runAction 中的完成处理程序在当前操作完成后调用下一个动画 因为每个原子必须做出很多不同的运
  • 如何使用AudioKit保存音频文件?

    我有音频文件 我给它做了一些效果 let pitchshifter AKPitchShifter self audioPlayer pitchshifter shift 10 AudioKit output pitchshifter 如果我
  • 减少 CoreData 的调试输出?

    我正在开发一个使用 CoreData 的 iOS macOS 项目 它工作正常 但它会向控制台输出大量调试信息 这使得控制台无法使用 因为我的打印语句隐藏在所有与 CoreData 相关的内容中 我有一个非常简单的 CoreData 设置
  • Swift:使具有相同“形状”的两种类型符合通用协议

    我有两种不同的类型 它们代表相同的数据 并且具有完全相同的 形状 这两种不同的类型是代码生成的 我被迫处理它们 但是 我想让它们符合一个通用的协议 这样我就可以对这两种类型一视同仁 这是一个例子 假设这是我所坚持的两种代码生成类型 stru
  • 根据 iOS 版本使用不同的类实现?

    iOS 11 最近添加了一个我想使用的新功能 但我仍然需要支持旧版本的 iOS 有没有一种方法可以将同一个类编写两次 并让较新版本的 iOS 使用该类的一个版本 而旧版本的 iOS 使用另一个版本 注 最初我用的是if available
  • Xcode 8 / Swift 3:“UIViewController 类型的表达式?未使用”警告

    我有以下函数 它之前编译得很干净 但在 Xcode 8 中生成警告 func exitViewController navigationController popViewController animated true UIViewCon
  • SwiftUI:发送电子邮件

    在正常情况下UIViewController在 Swift 中 我使用此代码发送邮件 let mailComposeViewController configuredMailComposeViewController mailCompose
  • 如何在 iOS 13 中将 UISegmentedControl 的背景颜色设置为白色

    iOS 13 对 UISegmentedControl 进行了一些更改 包括切换所选片段时的非常漂亮的动画 但是我注意到它没有显示backgroundColor属性正确 它似乎总是有一点色彩 我见过回答如何设置的问题selectedSegm
  • AVAudioPlayer 无法从网站播放 m4a 或 mp3 文件类型

    我试图在我的应用程序中找到一个仅纯 m4a 声音的 URL 我有音频的 URL 理论上可以下载它 然后 使用下载的文件URL到声音 我尝试使用AVAudioPlayer播放它 但它不播放任何声音 这是我的代码 在 URL 检索函数中 我调用
  • 动态调度协议扩展不适用于多个目标

    这是我的主要目标中的代码 所以不是测试目标 protocol ProtocolA func dontCrash extension ProtocolA func dontCrash fatalError func tryCrash dont
  • 如何使用 IOS 12 在 UITableViewCell 中正确添加 UICollectionView

    由于某些原因 在使用 Xcode 10 beta 时 我无法正确显示 tableview 单元格内集合中的某些项目 在过去的四天里我尝试了我所知道的一切 我做了一个小项目样本来看看我的问题是什么 如果有人想在本地运行完整代码 请参见此处 h
  • 在 Objective-C 中的 Swift 类上调用 NSStringFromClass 返回模块损坏的名称

    我知道这个问题 https stackoverflow com questions 24107658 get a user readable version of the class name in swift in objc nsstri

随机推荐