У меня проблема с данными Ember и встроенными объектами Mongodb. Вот моя модель:
App.Contact = App.Entity.extend({
name : DS.attr('string'),
firstname : DS.attr('string'),
additional_names : DS.attr('string'),
civility : DS.attr('string'),
birthday : DS.attr('date'),
organization : DS.belongsTo('App.Organization'),
role : DS.attr('string'),
photo_source : DS.attr('string'),
photo_uri : DS.attr('string'),
gravatar_mail : DS.attr('string'),
addresses : DS.hasMany('App.Address', { embedded: true }),
emails : DS.hasMany('App.Email', { embedded: true }),
phones : DS.hasMany('App.Phone', { embedded: true })
});
Теперь я получаю контакт через API: (GET /app/api/v1/contact/4f86c4774ab63c2417000001/) вот что я получаю:
{
"additional_names": null,
"addresses": [],
"birthday": null,
"civility": null,
"emails": [
{
"email": "[email protected]",
"label": null,
"resource_uri": "/app/api/v1/contact/4f86c4774ab63c2417000001/emails/0/",
"type": "HOME"
}
],
"firstname": "Alexandre",
"gravatar_mail": null,
"groups": [],
"id": "4f86c4774ab63c2417000001",
"name": "Simoui",
"organization": null,
"phones": [],
"photo_source": null,
"photo_uri": "/static/img/nophoto.png",
"resource_uri": "/app/api/v1/contact/4f86c4774ab63c2417000001/",
"role": null
}
У моего «корневого» объекта есть идентификатор, а у встроенного объекта «электронная почта» нет. Потому что в mongodb id устанавливается не для вложенных документов, а только для корневого документа.
Таким образом ember-data увидит, что объект "email" не имеет идентификатора, а затем попытается получить полный объект через API. Например: ПОЛУЧИТЬ /app/api/v1/email/set// 404 (НЕ НАЙДЕНО)
Чтобы убедиться, что это была проблема с Райтом, я попытался вернуть вложенные документы Mongodb с поддельным полем идентификатора. Нравится: (см. разницу в объекте электронной почты)
{
"additional_names": null,
"addresses": [],
"birthday": null,
"civility": null,
"emails": [
{
"id": 431,
"email": "[email protected]",
"label": null,
"resource_uri": "/app/api/v1/contact/4f86c4774ab63c2417000001/emails/0/",
"type": "HOME"
}
],
"firstname": "Alexandre",
"gravatar_mail": null,
"groups": [],
"id": "4f86c4774ab63c2417000001",
"name": "Simoui",
"organization": null,
"phones": [],
"photo_source": null,
"photo_uri": "/static/img/nophoto.png",
"resource_uri": "/app/api/v1/contact/4f86c4774ab63c2417000001/",
"role": null
}
Тогда у меня нет проблем, все в порядке. Итак, мой вопрос: есть ли способ исправить это?