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
編輯: 澄清的是我精神疾病。
謝謝你的回答。當我發現我的模型並不正確。我將這些關係定義爲一個基本模型並將其擴展。這似乎是問題所在。我調整了我的帖子並將其清除。對不起 –