模型
为了利用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功能。
我们将在下一节讨论如何做到这一点。