2017-10-05 67 views
0

我嘗試設置hasMany關係,並希望在單個請求中加載具有所有關聯模型的主實體。 但這似乎不適用於繼承的「hasMany」關係。 我有一個BaseModel,它定義了所有的關係和字段,以及一個定義要從中加載代理的「普通」模型。ExtJS 6繼承了hasMany-Relation嵌套加載

這些是我的(相關)模式:

Ext.define('MyApp.model.BaseUser', { 
    "extend": "Ext.data.Model", 
    "uses": [ 
     "MyApp.model.UserEmail", 
     "MyApp.model.Account" 
    ], 
    "fields": [ 
     { 
      "name": "name" 
     }, 
     { 
      "name": "accountId", 
      "reference": { 
       "type": "MyApp.model.Account", 
       "role": "account", 
       "getterName": "getAccount", 
       "setterName": "setAccount", 
       "unique": true 
      } 
     } 
    ] 
    "hasMany": [ 
     { 
      "name": "emails", 
      "model": "MyApp.model.UserEmail" 
     } 
    ], 
}); 

Ext.define('MyApp.model.User', { 
    extend: "MyApp.model.BaseUser", 
    proxy: { 
     type: 'rest', 
     url : '/api/user', 
     reader: { 
      type: 'json', 
      rootProperty: 'data', 
     } 
    } 
}); 

Ext.define('MyApp.model.UserEmail', { 
    extend: 'Ext.data.Model', 

    "fields": [ 
     { 
      "name": "id", 
      "type": "int" 
     }, 
     { 
      "name": "email", 
      "type": "string" 
     }, 
    ], 

    proxy: { 
     type: 'rest', 
     url : '/api/user/email', 
     reader: { 
      type: 'json', 
      rootProperty: 'data', 
     } 
    } 
}); 

// MyApp.model.Account looks like MyApp.model.UserEmail 

這是我的服務器的響應:

{ 
    data: [ 
     { 
      name: 'User Foo' 
      accountId: 50 
      account: { 
       id: 50, 
       balance: 0 
      }, 
      emails: [ 
       { 
        id: 70, 
        email: '[email protected]' 
       } 
      ] 
     }  
    ] 
} 

「賬戶」的關係正在「正常」的用戶模型,我可以訪問它通過自動生成的方法user.getAccount(),如我所料。

現在我試着用自動生成的方法來訪問用戶的電子郵件:

// user is of 'MyApp.model.User' 
user.emails(); // store 
user.emails().first(); // null 
user.emails().count(); // 0 

看來,「電子郵件」 -relation模型沒有加載到我的用戶模型。我能以正確的方式訪問它們嗎? 我可以通過user.data.emails訪問它們。但是這是一個普通對象數組,而不是UserEmail-Objects。

任何人都可以給我一些建議嗎?無鍵協會支持嵌套加載嗎?

親切的問候, czed

編輯: 澄清的是我精神疾病。

回答

0

它應該工作。這是一個工作fiddle。檢查控制檯嵌套加載的數據。

+0

謝謝你的回答。當我發現我的模型並不正確。我將這些關係定義爲一個基本模型並將其擴展。這似乎是問題所在。我調整了我的帖子並將其清除。對不起 –