Vapor文檔學習十九:FLUENT - Driver

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驅動程序調用。 如果你的數據庫不接受此類查詢,則可能會拋出異常。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容