我有模特:
Ext.define('EvaluateIt.model.Address', {
extend: 'Ext.data.Model',
config: {
idProperty: 'id',
fields: [
{name: 'address', type: 'string'},
{name: 'city', type: 'string'},
{name: 'state', type: 'string'},
{name: 'zipcode', type: 'string'},
{name: 'county', type: 'string'}
],
proxy: {
type: "sql",
database: 'Test'
}
}
});
在我的控制器中,我按如下方式将数据插入此模型:
var address = Ext.create('EvaluateIt.model.Address', {
address: json[i].garden.address.address
});
address.save();
通过Ajax抓取json数组并因此插入到模型中没有任何问题。
然而,当我尝试从模型中访问id时,
console.log('address.id ' + address.id);
我得到了ext-record-n形式的东西(其中n甚至没有映射到我的地址表中的id)。如何在此表中引用id列的实际值?我尝试了这个,但没有成功:https://github.com/tomalex0/SenchaTouch-v2-SqliteProxy/issues/3
答案 0 :(得分:1)
将id字段添加到fields数组将导致代理创建数据库表,其列id为AUTOINCREMENT字段。
Ext.define('EvaluateIt.model.Address', {
extend: 'Ext.data.Model',
config: {
idProperty: 'id',
fields: [
{name: 'id', type: 'int'},
{name: 'address', type: 'string'},
{name: 'city', type: 'string'},
{name: 'state', type: 'string'},
{name: 'zipcode', type: 'string'},
{name: 'county', type: 'string'}
],
proxy: {
type: "sql",
database: 'Test'
}
}
});
代理将读取数据库创建的id值。您可以通过将回调函数传递给模型保存方法来访问该值。
var address = Ext.create('EvaluateIt.model.Address', {
address: json[i].garden.address.address
});
address.save(function(record) {
console.log('address.id ' + record.getId();
}, this);