2017-01-04 39 views
3

我已经构建了一个具有多个表和复杂关系的MySQL数据库,但是当我通过蒸气文档时,特别是在构建模型阶段时,有一种创建表的方法(即我的模型类将与之交互) 。如何从已经存在的数据库中构建一个应用程序?

static func prepare(_ database: Database) throws { 
    try database.create("users") { users in 
     users.id() 
     users.string("name") 
    } 
} 

不过,我不想使用它,因为我已经有包含外键和类型,如DATETIME(我不知道如何迅速范围内声明。)表是有如何将我已建成的表格与蒸气连接起来?

回答

1

这是某处Vapor(或更正确的Fluent,这是Vapor的数据库级别)有点有限。

是的,您可以使用您现有的表格。在您的prepare(_:)方法中,您可以简单地将实现留空而不创建表。你也应该留空revert(_:)

在您的init(node:in:)初始化和makeNode(context:)方法中,您需要在表格中的列名称和类型以及Swift模型中的属性类型之间进行映射。

0

在模型对象类(User here)中,prepare方法可以保持未实现,因为我们不需要从代码明确创建表。所以应该像

static func prepare(_ database: Database) throws { 
    ... 
} 

但是应该添加一个名为entity一个静态变量,它在数据库映射表名没有模型类,像下面

final class User: Model { 
    static let entity = "users" 
    ... 
} 

最后,我们应该将模型添加到与drop.preparations.append(User.self)

液滴的准备阵列因此,我们可以使用具有复杂关系的数据库中的任何现有表来映射Vapor中的模型对象。

相关问题