vapor学习教程-Driver

Driver

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

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学习教程-目录

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容