2016-10-18 3 views
0

"Model"을 Vapor에서 "makeNode"함수와 함께 사용하고 있는데, 테이블 열의 크기가 약 14보다 작 으면 프로젝트를 성공적으로 빌드하고 실행할 수 있습니다. 그러나 테이블 열이 19 또는 20이되면 증기는 매우 천천히 형성되기 시작하고 결국 실패 할 것이라고보고합니다. MySQL 또는 MongoDB를 사용해 보았습니다. 둘 다 같은 문제가 있습니다. 그래서 난 20 열로 구성된 테이블을 사용해야 할 때이 문제를 해결하는 방법을 궁금 해서요. (가) 아래의 세부 사항은 다음과 같습니다노드의 열 수가 18을 초과하면 증기 빌드가 실패 했습니까?

final class TableName: Model { 
    var id: Node? 
    var column1: Int 
    var column2: Int 
    var column3: String 
    var column4: String 
    var column5: String 
    var column6: String 
    var column7: String 
    var column8: String 
    var column9: String 
    var column10: String 
    var column11: String 
    var column12: String 
    var column13: String 
    var column14: String 
    var column15: String 
    var column16: String 
    var createdAt: Double 
    var updatedAt: Double 

    init(column1: Int, column2: Int, column3: String, column4: String, column5: String, column6: String, column7: String, column8, column9: String, column10: String, column11: String, column12: String, column13: String, column14: String, column15: String, column16: String, createdAt: Double, updatedAt: Double) { 
     self.id = UUID().uuidString.makeNode() 
     self.column1 = column1 
     self.column2 = column2 
     self.column3 = column3 
     self.column4 = column4 
     self.column5 = column5 
     self.column6 = column6 
     self.column7 = column7 
     self.column8 = column8 
     self.column9 = column9 
     self.column10 = column10 
     self.column11 = column11 
     self.column12 = column12 
     self.column13 = column13 
     self.column14 = column14 
     self.column15 = column15 
     self.column16 = column16 
     self.createdAt = createdAt 
     self.updatedAt = updatedAt 
    } 

    init(node: Node, in context: Context) throws { 
     id = try node.extract("id") 
     column1 = try node.extract("column1") 
     column2 = try node.extract("column2") 
     // from 2~16, etc... don't repeat here... 
     updatedAt = try node.extract("updatedAt") 
     createdAt = try node.extract("createdAt") 
    } 

    // Issue happened here... 
    // when the amount less than about 10, results are ok and build fast, 
    // but will build slowly and slowly when the number goes more and more, 
    // even build failed when table columns goes to about 18~20. 
    func makeNode(context: Context) throws -> Node { 
     var node = try Node(node: [ 
      "id": id, 
      "column1": column1, 
      "column2": column2, 
      "column3": column3, 
      "column4": column4, 
      "column5": column5, 
      "column6": column6, 
      "column7": column7, 
      "column8": column8, 
      "column9": column9, 
      "column10": column10, 
      "column11": column11, 
      "column12": column12, 
      "column13": column13, 
      "column14": column14, 
      "column15": column15, 
      "column16": column16, 
      "createdAt": createdAt, 
      "updatedAt": updatedAt 
      ]) 
     return node 
    } 
} 

그리고 빌드 오류 메시지입니다 :

명령으로 인해 신호에 실패 처치 : 그래서 9

, 내가주는 감사 것 이 문제를 해결할 수있는 힌트를 얻으십시오. 고맙습니다.

답변

0

이것은 컴파일러의 버그와 같습니다. 형식 힌트 (as Foo에 추가하는 등)는 혼동 된 컴파일러를 수정하는 좋은 방법입니다.

오류의 전체 출력을 https://bugs.swift.org으로보고하면 팀이 최대한 빨리 수정하는 데 도움이됩니다.

관련 문제