如何将结果集从 "MySql for Swift" 传递到叶模板竞赛

How to pass ResultSet from "MySql for Swift" to leaf template contest

作为 Swift 和 Vapor 的新手,我正在尝试一个 Vapor 项目。它有一个简单的路由,通过 MySQL for Swift 从数据库中获取数据,然后将 ResultSet 传递给 Leaf 模板。这是我正在尝试的:

drop.get("report") {req in
    let data = try mysql.execute("select * from things")
    return try drop.view.make("report", ["data":data])
}

但是 Swift 抱怨这个错误:

error: cannot convert value of type '[[String : Node]]' to expected dictionary value type 'Node'
return try drop.view.make("report", ["data":data])
                                            ^~~~

感觉好像少了一个类型转换步骤,那是什么?

您应该可以通过手动将字典数组的类型设置为 Node:

来解决此问题
drop.get("report") {req in
    let data = try mysql.execute("select * from things")
    let dataNode = Node.array(data.map({ return Node.object([=10=]) }))
    return try drop.view.make("report", ["data":dataNode])
}