-
[Vapor] SQL 문으로 쿼리문 사용하기Programing/Vapor 2020. 6. 19. 01:44
안녕하세요~! 5anniversary 입니다!!
오늘은 SQL문을 사용하는 방법에 대해 알아보도록 할 거예요~!
제가 현재 진행 중인 프로젝트 내에서 검색, Like문을 사용해야 하는 경우가 있는데, FluentMySQL에서는 제공하지 않아
생 쿼리문을 사용해보도록 할 거예요. 이외에도 불가능한 경우가 있는 경우 사용할 수가 있겠죠??
한번 알아보도록 하죠~!
오늘 사용할 메서드는 withPooledConnection()이라는 메소드인데요, 이 메소드는 기본 제공되는 DatabaseKit에서 제공되는 메서드예요
해당 메서드를 이용하는 방법은 사용자로부터 받는 Request에서 각자의 vapor에서 사용하는 DB에 맞춰서 코드를 작성해주면 되는데요
func rawExampleHandler(_ req: Request) throws -> Future<Response> { // search라는 parameter값을 받아줌 guard let search = req.query[String.self, at: "search"] else { throw Abort(.badRequest, reason: "Missing search term in request") } // Article 모델로 반환 받기 위함 let searchResult = req.withPooledConnection(to: .mysql) { conn -> Future<[Article]> in conn .raw("Select * from Article where title like '%" + search + "%'" ) .all(decoding: Article.self) // 위에서 받은 search 상수로 Article 테이블에서 title 컬럼에서 검색 } return searchResult.flatMap({ (result) in return try ResponseJSON<[Article]>(data: result).encode(for: req) }) }) }
위에 처럼 코드를 작성해주시면 되는데요, 여기서 중요한 부분은 conn -> Future<[Article]> in인데요
해당 부분에서 반환되는 모델을 작성을 잘 작성해주셔야 하고요,
conn.raw("raw code").all(decoding: 모델.self) 부분에서 원하는 쿼리문을 미리 사용해본 뒤 적용시켜주시면 되겠습니다!!
'Programing > Vapor' 카테고리의 다른 글
[Vapor] Pagination 사용해보기 (0) 2020.06.19 [Vapor] Rest API 만들기 - 3 (GET) (0) 2020.05.28 [Vapor] Rest API 만들기 - 2 (POST) (0) 2020.05.22 [Vapor] Rest API 만들기 - 1 (0) 2020.05.22 💧Vapor💧 Heroku MySQL DB 사용하기 (0) 2020.05.11