美文网首页
Vapor文档学习十九:FLUENT - Driver

Vapor文档学习十九:FLUENT - Driver

作者: Supremodeamor | 来源:发表于2017-04-21 10:52 被阅读92次

    Fluent是第一个Swift ORM,它与各种各样的数据库非常相似。 它提供了一种使用简单、表达精美的语法来与数据库进行交互。

    Driver是引擎中强大的Fluent,Fluent具有默认的存储驱动,另外有许多数据库驱动的providers可以使用,比如:MySQL、SQLite、Mongo、PostgreSQL等等。


    上图以MySQL为例,显示了ProviderDriver之间的关系,这种区别可以让Fluent独立于Vapor使用。
    如果你不想通过Vapor使用Fluent,你可以将Driver添加到你的package中,如果你要使用Vapor,你可以导入Provider。(也就是说要么你往自己的开发包中添加驱动程序,要么就引入对应的Provider,使用Vapor进行开发。)
    GitHub搜索:

    目前不是每个Driver都有Provider,也不是每个Driver的Provider都满足最新版本的Vapor。这需要伟大的奉献和努力。

    Creating a Driver

    Fluent是一种很强大,支持多种数据库模型持久化的软件包,它最开始是为SQL和NoSQL数据库设计的。
    遵守Fluent.Driver协议的任何数据库都可以为Fluent和Vapor提供数据模型。

    Driver协议:

    public protocol Driver {
        var idKey: String { get }
        func query<T: Entity>(_ query: Query<T>) throws -> Node
        func schema(_ schema: Schema) throws
        func raw(_ raw: String, _ values: [Node]) throws -> Node
    }
    
    • <b>idKey:</b>被用于类似User.find()这样的方法,在SQL中一般是id,在MongoDB中一般是_id
    • <b>query:</b>Fluent对每次查询都会调用此方法,可以驱动Qeury中所有可以正确解析的属性,然后通过Node显示返回所需的行、文档或者其他数据。
    • <b>schema:</b>在数据库准备查询之前,将调用它的schema方法。 对于某些NoSQL数据库(如MongoDB),可以忽略此方法。 对于SQL,就要通过Schema调用CREATE和其他类似命令(sql语句)。
    • <b>raw:</b>这是一个可选方法,可以被接收字符串查询的任何Fluent驱动程序调用。 如果你的数据库不接受此类查询,则可能会抛出异常。

    相关文章

      网友评论

          本文标题:Vapor文档学习十九:FLUENT - Driver

          本文链接:https://www.haomeiwen.com/subject/cyarzttx.html