vapor学习教程-Driver

Driver

Fluent 引擎下的动力来源于驱动程序,Fluent默认配有内存驱动并且有许多供应商提供了像MySQL, SQLite, Mongo, PostgreSQL等数据库的驱动程序。

《vapor学习教程-Driver》 Paste_Image.png

该图显示了使用
MySQL的驱动程序和提供程序之间的关系。 这种区别就是允许
Fluent独立于
Vapor而使用。

如果你想分离于
vapor而独立使用
Flunet,你就将驱动导入到你的包里,如果你使用
vapor,就将导入提供者。

搜索Github:

并不是所有的驱动程序都有供应商,并不是所有的驱动程序或提供者都是最新的Vapor 1.0

Creating a Driver

Fluent是一个强大的数据库不可知软件包,用于持续化模型。它一开始的设计就是为了工作在关系型数据库和非关系型数据库。
符合Fluent.Driver的任何数据库将能够为FluentVapor提供模型。
驱动协议本身很简单的:

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
}

ID Key

ID键将用于为User.find()提供功能。在SQL,它是id,在MongoDB,它是_id。

Query

Fluent对每个查询都会调用此方法。正确理解Query中所有属性的驱动程序工作,并返回由Node表示的所需行,文档或其他数据。

Schema

在数据库预期接受模式查询之前,将调用模式方法。对于某些NoSQL数据库(如MongoDB),可以忽略这个。对于 SQL,这是根据Schema来调用CREATE和其他类似命令。

Raw

这是一个可选的方法,可以被接受字符串查询的任何Fluent驱动程序使用。如果您的数据库不接受此类查询,则可能会抛出错误。

继续学习vapor学习教程-目录

    原文作者:晓蜻蜓
    原文地址: https://www.jianshu.com/p/ff950e6df9ce
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞