我有一个Person
模型,其中Address
通过'hasOne'与之关联。两种模型都通过REST代理加载数据。如果我加载一个人并尝试获取地址,我可以看到地址网址的http请求但没有任何类型的人员ID,因此我的服务器发送错误。
人:
Ext.define('AP.model.Person', {
extend: 'Ext.data.Model',
fields: [
{ name: 'id', type: 'int', persist : false },
{ name: 'name', type: 'string' }
],
proxy: {
type: 'rest',
url : AP_ROOT_URL + 'persons/'
},
associations: [{
type: 'hasOne',
model: 'AP.model.Addresses',
foreignKey: 'person_id',
primaryKey: 'id',
getterName: "getAddress"
}]
});
地址:
Ext.define('AP.model.Address', {
extend: 'Ext.data.Model',
fields: [
{ name: 'person_id', type: 'int', persist : false },
{ name: 'address', type: 'string' }
],
proxy: {
type: 'rest',
url : AP_ROOT_URL + 'addresses/'
}
});
以下代码:
person.getAddress(function(address){
console.log(address);
});
创建一个请求:
http://localhost/addresses
什么时候应该创建一个请求:
http://localhost/addresses/person_id (http://localhost/addresses/1)
答案 0 :(得分:0)
这里有一个HasMany
关系,而不是HasOne
。你不会让HasOne
使用这些模型,因为正如文档中所述:“所有者模型应该有一个引用相关模型主键的外键”。在您的情况下,外键位于关联模型中(这使其成为1-n关系)。