2013-09-25 34 views
0

我有一个Person模型,它有一个Address通过'hasOne'关联到它。两种模型都通过REST代理加载数据。如果我加载一个人,并尝试获取地址,我可以看到一个HTTP请求的地址的网址,但没有任何种类的人员ID,所以我的服务器发送错误。Extjs hasOne association not preperperly

人:

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

你在这里什么是HasMany关系,不HasOne。您不会得到HasOne来处理这些模型,因为正如文档中所述:“所有者模型应该有一个引用相关模型的主键的外键”。在你的情况下,外键在关联模型中(这使它成为1-n关系)。