J'écris une application de braise pour montrer le menu d'un restaurant. Les données étant organisées comme un restaurant ayant de nombreuses sections de menu qui eux-mêmes ont de nombreux éléments.Les relations imbriquées utilisant include
Dans mon itinéraire, j'utilise findRecord pour charger l'enregistrement de restaurant de niveau supérieur avec include défini pour inclure les sections et les éléments. Le serveur produit le JSONAPI suivant:
{
"links": {
"up": "http://localhost/api/restaurants",
"self": "http://localhost/api/restaurants/0b27fd96-90e8-11e7-81c2-08002787e7fb"
},
"data": {
"type": "restaurant",
"id": "0b27fd96-90e8-11e7-81c2-08002787e7fb",
"attributes": {
"title": "Made-Up Foodery",
"contact-number": "+1-555-1234",
"restaurant-address": "Made-up, address F4K 3ED",
"minimum-order": 500,
"delivery-cost": 250
},
"relationships": {
"menu-sections": {
"links": {
"related": "http://localhost/restaurants/0b27fd96-90e8-11e7-81c2-08002787e7fb/menu-sections"
},
"data": [
{
"type": "menu-section",
"id": "23760716-1b75-4880-bae4-a6daaef3fc98"
}
]
}
}
},
"included": [
{
"type": "menu-section",
"id": "23760716-1b75-4880-bae4-a6daaef3fc98",
"attributes": {
"title": "Test Section",
"description": "This is a test section."
},
"relationships": {
"menu-items": {
"links": {
"related": "http://localhost/menu-sections/23760716-1b75-4880-bae4-a6daaef3fc98/menu-items"
},
"data": [
{
"type": "menu-item",
"id": "a62e2ae0-326b-4838-b5ba-ffa102fcafb1"
}
]
}
},
"links": {
"self": "http://localhost/menu-sections/23760716-1b75-4880-bae4-a6daaef3fc98"
}
},
{
"type": "menu-item",
"id": "a62e2ae0-326b-4838-b5ba-ffa102fcafb1",
"attributes": {
"food-name": "Test Food",
"price": 350,
"is-hot": true,
"is-vegetarian": false,
"contains-nuts": false
},
"links": {
"self": "http://localhost/menu-items/a62e2ae0-326b-4838-b5ba-ffa102fcafb1"
}
}
]
}
de Braise je définis des modèles avec des relations appropriées comme:
// restaurant.js
export default DS.Model.extend({
title: DS.attr(),
contactNumber: DS.attr(),
restaurantAddress: DS.attr(),
deliveryCost: DS.attr(),
minimumOrder: DS.attr(),
menuSections: DS.hasMany('menu-section')
});
// menu-section.js
export default DS.Model.extend({
title: DS.attr(),
description: DS.attr(),
restaurantDetails: DS.belongsTo('restaurant'),
items: DS.hasMany('menu-item')
});
// menu-item.js
export default DS.Model.extend({
foodName: DS.attr(),
price: DS.attr(),
isVegetarian: DS.attr(),
isHot: DS.attr(),
containsNuts: DS.attr(),
menuSection: DS.belongsTo('menu-section')
});
Dans ma route, je fais:
let restaurant = this.get('store').findRecord('restaurant', '0b27fd96-90e8-11e7-81c2-08002787e7fb', {include: 'menuSections,menuSections.items'});
Toutefois, en ce que je peux Dites alors que les objets de la section menu sont chargés, les éléments de menu ne le sont pas. Pour autant que je peux dire de mes recherches, le JSONAPI émis par le serveur est correct.
Est-ce que je fais quelque chose de mal ou est-ce que ce n'est simplement pas supporté par les ember-data?