模型
為了利用 ORM,Mirage 需要了解您應用程式的模型及其關係。本節將教您如何定義和使用模型,下一節將討論關係。
澄清一下,Mirage 模型實例僅存在於 Mirage 的伺服器中,永遠不會直接與您的應用程式共享或直接在元件中呈現。它們的存在只是為了幫助您管理假後端中的資料和關係,但在將資料傳送到您的應用程式之前,它們會被序列化為 JSON 字串。
定義模型
要定義模型,請從 miragejs
匯入 Model
類別,並將其用作 models
設定選項的鍵。
import { createServer, Model } from "miragejs"
createServer({
models: {
blogPost: Model,
},
})
上述設定定義了 Mirage 中的 BlogPost
模型。
建立模型
要建立模型,請透過 schema
物件存取模型的集合。您可以在路由處理器中將 schema
作為第一個參數存取。
this.post("/blog-posts", function (schema) {
let attrs = this.normalizedRequestAttrs()
schema.blogPosts.create(attrs)
})
您也可以在您的 Mirage 伺服器實例中,例如在您的預設情境中,將其作為 server.schema
直接存取。
createServer({
models: {
blogPost: Model,
},
seeds(server) {
server.schema.blogPosts.create({ title: "Interstellar" })
},
})
請注意,集合是模型名稱的複數形式(blogPost
模型定義會建立 schema.blogPosts
集合)。
在路由處理器之外,您通常會使用工廠透過 server.create
而不是直接透過 schema
來建立模型。
seeds(server) {
server.create("blog-post")
}
對 server.create
的呼叫會在幕後委派給 schema
集合的 create
方法。我們稍後會在這些指南中詳細討論如何使用工廠建立資料。
存取模型
要存取您的模型,請使用模型集合中的各種查詢方法。
例如,使用 all()
來返回所有已知的模型
this.get("/blog-posts", (schema, request) => {
return schema.blogPosts.all()
})
以下是一些其他常用的查詢方法
schema.blogPosts.find(1)
schema.blogPosts.first()
schema.blogPosts.where({ isPublished: true })
schema.blogPosts.findBy({ title: "Introduction" })
請查閱 Schema API 文件以查看所有可用的查詢方法。
更新和刪除模型
一旦您開始使用模型的實例,您將可以存取其他屬性和方法。
例如,您可以更新模型
let post = schema.blogPosts.find(1)
post.update({ author: "Obi-Wan" })
或刪除模型
let post = schema.blogPosts.find(2)
post.destroy()
請查閱 Model API 文件以查看模型實例的所有可用欄位和方法。
一旦您的模型定義完成,下一步就是定義它們之間的關係,這樣您才能真正開始利用 Mirage ORM 的強大功能。
我們將在接下來討論如何執行此操作。