Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Sideload a lists "belongsTo" objects with EmberData

I have 3 emberData models:

App.Product = DS.Model.extend({
  page_title: DS.attr('string'),
  shop: DS.belongsTo('App.Shop'),
  user: DS.belongsTo('App.User')
});

App.Shop = DS.Model.extend({
  name: DS.attr('string'),
});

App.User = DS.Model.extend({
  name: DS.attr('string')
});

and the JSON data looks like this:

{
  products: [
    {
      id: "1",
      page_title: "Product 1",
      user_id: "1",
      shop_id: "1",
    },
    {
      id: "2",
      page_title: "Product 2",
      user_id: "2",
      shop_id: "1",
    }
  ],
  users: [
    {
      id: "1",
      name: "User 1"
    },
    {
      id: "2",
      name: "User 2"
    }
  ],
  shops: [
    {
      id: "1",
      name: "Shop 1"
    }
  ]
}

But when I load the data I got the following error:

Assertion failed: Your server returned a hash with the key shops but you have no mapping for it 
like image 853
Andreas Köberle Avatar asked Mar 22 '23 23:03

Andreas Köberle


1 Answers

Ok, the documentaion is very unclear about the fact that when you have a belongsTo relationship the key for the sideload must be singular not plural even if its a list. So the JSON has to look like this:

{
  products: [
    {
      id: "1",
      page_title: "Product 1",
      user_id: "1",
      shop_id: "1",
    },
    {
      id: "2",
      page_title: "Product 2",
      user_id: "2",
      shop_id: "1",
    }
  ],
  user: [
    {
      id: "1",
      name: "User 1"
    },
    {
      id: "2",
      name: "User 2"
    }
  ],
  shop: [
    {
      id: "1",
      name: "Shop 1"
    }
  ]
}
like image 191
Andreas Köberle Avatar answered Apr 01 '23 04:04

Andreas Köberle