我在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"
}
]
}
]
}我的服务器配置:幻影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()
})
},
})发布于 2021-01-15 13:43:48
实际上,您不需要blog_tag模型就可以执行多到多的操作,Mirage.js将只处理blog和tag模型。
参见这里的一个工作示例:幻影REPL
https://stackoverflow.com/questions/65710036
复制相似问题