2017-03-20 5 views
1

Swift와 Vapor에 익숙하기 때문에 Vapor 프로젝트를 실험하고 있습니다. 간단한 경로가있어서 MySQL for Swift을 통해 DB에서 데이터를 가져온 다음 ResultSet을 리프 템플릿에 전달합니다."MySql for Swift"에서 리프 템플릿 컨테스트로 ResultSet을 전달하는 방법

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

그러나 스위프트는이 오류와 함께 불평 : 여기에 내가 시도하고 무엇을 나는 타입 캐스팅 단계 누락 것 같은

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

느낀다, 그러나 그것은 무엇인가?

답변

1

수동 Node에 사전 배열의 형태를 설정하여이 문제를 해결 할 수 있어야한다 :

drop.get("report") {req in 
    let data = try mysql.execute("select * from things") 
    let dataNode = Node.array(data.map({ return Node.object($0) })) 
    return try drop.view.make("report", ["data":dataNode]) 
} 
+0

감사를 팁,하지만 난 새로운 오류 얻을 : '오류 :'형식의 값을 변환 할 수 있습니다 [[String : Node]] '지정한 유형'Node ''로 – dirksen

+0

@ user400702 사전이 배열에없는 것을 놓쳤습니다. 내 대답에 문제가 해결 된 것 같습니다. –

+1

그게 다야! 고마워요! Node.array (data.map (...)) 행에 관해서는 (특히 큰 ResultSet을 반복 할 때) 많은 성능 저하가 발생합니까? 나를 위해, 그것의 주요 목적은 컴파일러를 달래는 것 같다. – dirksen