ember multi level имеет много проблем с сериализацией - PullRequest
0 голосов
/ 10 октября 2018

У меня возникли проблемы с сериализацией модели.Ниже приведен подробный код, который покажет, как выглядит моя текущая модель и соответствующие сериализаторы.

  1. Модель пользователя

    export default Model.extend({
      name: attr('string'),
      accounts: hasMany('account', {async: false})
    });
    
  2. Модель аккаунта

     export default Model.extend({
         type: attr('string'),
         transactions: hasMany('transaction')
     })
    
  3. Модель транзакции

     export default Model.extend({
        date: attr('string'),
        amount: attr('number')
     })
    

Так что в основном это hasMany внутри другого hasMany.

Сериализаторы выглядят так:

  1. базовый сериализатор:

     export default BaseSerializer.extend({
        keyForAttribute(key) {
          return key.underscore();
        },
        keyForRelationship(key, relationship) {
           return key.underscore();
        }
       });
    
  2. Пользовательский сериализатор:

    export default BaseSerializer.extend(DS.EmbeddedRecordsMixin, {
     attrs: {
       account: { embedded: 'always' }
     }
    });
    
  3. Сериализатор учетной записи:

    export default BaseSerializer.extend(DS.EmbeddedRecordsMixin, {
     attrs: {
       transaction: { embedded: 'always' }
     }
    });
    

Теперь, когда я вызываю вызов API, который дает мне ответ json, где у модели пользователя есть свойство, называемое учетными записями: у которого внутренне есть другое свойство, называемое транзакциями, яожидая их сериализации, но как-то не работает.я сделал что-то не так здесь?Пожалуйста, сообщите, как я новичок в ember и все еще изучаю его.

Базовый сериализатор:

   export default DS.JSONSerializer.extend(DS.EmbeddedRecordsMixin, {
      keyForRelationship(key, relationship) {
        return key.underscore();
      }
   })

Сериализованный JSON

У меня его нет, но из журналов консоли,похоже, что только пользовательская модель сериализуется, как когда я пытался напечатать console.log (user.get ('accounts'). get ('firstObject'). get ('type'), тогда я увидел там неопределенное.

Что я хочу это:

{

  name: "bhavya"
  accounts: [
   {
     type : 'savings',
     transactions: [
       {  
         amount: 500
       }
     ]
  }
 ]
}
...