【问题标题】:Vapor build failed when the amount of columns in Node are more than 18?当 Node 中的列数超过 18 时,Vapor build 失败?
【发布时间】:2016-10-18 03:29:45
【问题描述】:

我在 Vapor 中使用带有函数“makeNode”的“模型”,当表格列数少于 14 时,我可以成功构建和运行项目。 但是当我的表格列数达到 19 或 20 时,Vapor 开始构建非常非常缓慢,最终会报告失败。 我尝试过使用 MySQL 或 MongoDB,都遇到了同样的问题。所以我想知道当我需要使用包含 20 列的表时如何解决这个问题。 详情如下:

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

因此,如果您能给我任何解决此问题的提示,我将不胜感激。谢谢。

【问题讨论】:

    标签: vapor


    【解决方案1】:

    这听起来像是编译器中的错误。类型提示(添加 as Foo 等)是解决编译器困惑的好方法。

    将错误的完整输出报告给 https://bugs.swift.org 将有助于团队尽快修复它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-29
      • 2020-03-26
      • 2019-06-23
      • 1970-01-01
      • 2022-10-17
      • 2019-05-08
      相关资源
      最近更新 更多