我在 MirageJs 中有两个模型:
- 博客
- 标签
每个博客可以有更多标签,反之亦然。我与一个名为 的连接表建立了多对多关系blog_tag
。我的问题是,当我从服务器获得响应时,标签只包含 id 属性。如何将整个标签对象嵌入到响应中?
Response:
{
"blogs": [
{
"title": "Some title",
"author": "Author 0",
"id": "1",
"tags": [
{
"id": "1"
// Other properties are not included here :(
}
]
}
]
}
I like to see something like this:
{
"blogs": [
{
"title": "Some title",
"author": "Author 0",
"id": "1",
"tags": [
{
"id": "1",
"name": "Tag 0"
}
]
}
]
}
我的服务器配置: Mirage REPL
import { belongsTo, createServer, Factory, hasMany, Model, RestSerializer } from "miragejs"
export default createServer({
serializers: {
blog: RestSerializer.extend({
include: ['tags'],
embed: true
})
},
models: {
blog: Model.extend({
tags: hasMany('blog_tag')
}),
tag: Model.extend({
blogs: hasMany('blog_tag')
}),
blog_tag: Model.extend({
blog: belongsTo(),
tag: belongsTo()
})
},
factories: {
blog: Factory.extend({
author(i) {
return 'Author ' + i
},
title() {
return 'Some title'
}
}),
tag: Factory.extend({
name(i) {
return 'Tag ' + i
}
})
},
seeds(server) {
server.createList('blog', 2)
server.createList('tag', 10)
server.create('blog_tag', { blogId: 1, tagId: 1 })
},
routes() {
this.namespace = "api"
this.get("/blogs", (schema) => {
return schema.blogs.all()
})
},
})