gpt4 book ai didi

vapor - Vapor 4 中的原始查询

转载 作者:行者123 更新时间:2023-12-04 11:22:00 28 4
gpt4 key购买 nike

在 Vapor 3 中,我能够获取到数据库的 newConnection 并使用以下命令调用原始 sql 查询:

return request.withNewConnection(to: .mysql) { (con) -> EventLoopFuture<T> in  
return con.raw(sql)...
}

现在我将我的代码迁移到 Vapor 4,函数 raw 或 withNewConnection 消失了,我可以用什么来进行原始查询。

重现步骤
return request.withNewConnection(to: .mysql) { (con) -> EventLoopFuture<T> in  
...
}

错误:
无法推断引用成员“mysql”的上下文基础
“请求”类型的值没有成员“withNewConnection”

预期行为

在 request.db 中有一个函数可以让我获得新连接或运行原始查询。

环境
  • Vapor 框架版本:4.7.1
  • Vapor 工具箱版本:vapor-beta
  • 操作系统版本:macOS Catalina
  • 最佳答案

    尝试这个:

    import SQLKit
    struct Row:Content
    {
    // fields go here
    }
    struct Context:Decodable
    {
    let rows:[Row]
    }
    func rawDemo(_ request:Request) throws -> EventLoopFuture<View>
    {
    return (request.db as! SQLDatabase).raw("SELECT * FROM MyTable").all(decoding:Row.self).flatMap
    {
    results in
    let context = Context(rows:results)
    return request.view.render("rawDemo", context)
    }
    }

    您必须导入 SQLKit模块和类型转换 request.dbSQLDatabase如图所示以执行原始查询。一旦你这样做了,它就会变得很像 Vapor 3 方法。但是,通过 Vapor 4 中提供的新功能,我现在设法摆脱了所有原始查询并替换为流畅的 Fluent 查询!

    关于vapor - Vapor 4 中的原始查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62144473/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com