我熟悉旧的余烬数据" sideloading"模型,看起来像这样: ```
{
authors:[
{id:1, name:"Ernest", type: 'author', books: [1,2]
],
books: [
{id:1, name: "For whom the bell tolls", type: 'book', author:1},
{id:2, name: "Farewell To Arms", type: 'book', author:1}
]
}
但新的JSON-API方法不同。
首先,(我喜欢这个),属性与id和类型信息分开,防止命名空间冲突。
我还不了解如何与JSON-API格式建立hasMany
关系。任何人都可以指向我关于如何预期的文档或文章吗? examples on the JSON-API page显示个人关系,但不显示hasMany
。
如果你能用新格式写上面的例子,你就回答了我的问题。
答案 0 :(得分:2)
我在The JSON-API spec找到了答案。
每个模型都应该有一个relationships
键,其值是一个对象,每个命名关系都有一个键,它还有一个data
键,可以是单个对象,也可以是一个数组。 hasMany
关系。
通过提供included
密钥作为顶级成员,我可以延迟加载实体。
在这种情况下,上面的例子是:
{
"data": [
{
"id": 1,
"type": "author",
"attributes": {
"name": "Ernest"
},
"relationships": {
"books": {
"data": [
{
"id": "1",
"type": "book"
},
{
"id": "2",
"type": "book"
}
]
}
}
}
],
"included": [
{
"id": 1,
"type": "book",
"attributes": {
"name": "For Whom the Bell Tolls"
},
"relationships": {
"author": {
"data": {
"id": 1,
"type": "author"
}
}
}
},
{
"id": 2,
"type": "book",
"attributes": {
"name": "Farewell to Arms"
},
"relationships": {
"author": {
"data": {
"id": 1,
"type": "author"
}
}
}
}
]
}
答案 1 :(得分:0)
仅供参考:如果您想在以后获取hashMany关系,则还有两个选择。
只要需要hashMany关系,Ember Data就会调用具有相关链接的后端以获取所有关系。
{
"data": [{
...,
"relationships": {
"books": {
"links" {
"related": "http://example.com/books"
}
}
}
}]
}
2。使用查找ID
只要需要hashMany关系,Ember Data就会使用网址调用后端以获取给定的ID。在此示例中,它将为http://example.com/books?ids=1&ids=2
{
"data": [{
...,
"relationships": {
"books": {
"books": {
"data" [{
"id": "1",
"type": "book"
}, {
"id": "2",
"type": "book"
}]
}
}
}
}]
}