gpt4 book ai didi

swift - Vapor 4 不区分大小写的查询

转载 作者:行者123 更新时间:2023-12-03 09:29:52 25 4
gpt4 key购买 nike

在 Vapor 3 中,您可以将 filter 方法与 SQLiteBinaryOperator 一起使用,因此您可以使用类似运算符创建查询。我正在尝试在 Vapor 4 中做完全相同的事情,但找不到任何东西。
这是我的代码
Vapor 4

func queryUserMovies(_ req: Request) throws -> Future<[Users]> {
let title = req.parameters.get("title")!
return Movies.query(on: req.db).filter(\.$title == title).first().unwrap(or:Abort(.notFound, reason: "There's no movie")).flatMap{ movie in
return movie.$users.query(on: req.db).all()
}
}
Vapor 3
func queryUserMovies(_ req: Request) throws -> Future<[Users]> {
guard let movie = req.query[String.self, at: "movie"] else {
throw Abort(.badRequest, reason: "Not such movie")
}
return Movies.query(on: req).filter(\.title, .like, movie).first().unwrap(or:Abort(.notFound, reason: "There's no movie")).flatMap{ movie in
return movie.users.query(on: req).all()
}
}
Vapor 4 中是否有类似的内容,或者我是否需要在 SQL 中执行原始查询?

最佳答案

Vapor 4 中的等价物是:

func queryUserMovies(_ req: Request) throws -> Future<[Users]> {
let title = try req.query.get(String.self, at: "title")
return Movies.query(on: req.db)
.filter(\.$title, .custom("ilike"), title)
.first()
.unwrap(or:Abort(.notFound, reason: "There's no movie"))
.flatMap{ movie in
return movie.$users.query(on: req.db).all()
}
}
您甚至可以进行更广泛的搜索以找到包含该标题的任何内容:
.filter(\.$title, .custom("ilike"), "%\(title)%")

关于swift - Vapor 4 不区分大小写的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63583887/

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