Sencha touch 2.2 sql代理不插入数据

时间:2013-04-25 07:01:57

标签: extjs proxy sencha-touch sencha-touch-2

我成功尝试了sencha touch app示例显示here

他们使用商店代理类型作为 localstorage ,它的工作正常,然后我将代理类型更改为sql,如下所示

Ext.define('notesApp.store.Notes', {
    extend : 'Ext.data.Store',
    requires : 'Ext.data.proxy.Sql',
    config : {
        model : 'notesApp.model.Note',
        proxy : {
            type : 'sql',
            database: "SqlProxyTest",
            table: "Notes",
            id : 'notes-app-store'
        },
        sorters : [{property : 'dateCreated', direction : 'DESC'}],
        grouper : {
            sortProperty : 'dateCreated',
            direction : 'DESC',
            groupFn : function(record) {
                if(record && record.data.dateCreated) {
                    return record.data.dateCreated.toString();
                }
                return '';
            }
        }
    }
});

没有错误。 我可以插入数据,我可以在列表视图中看到记录,但是chrome资源显示“节点表为空”。 如果我刷新浏览器,则记录将从列表中消失。

enter image description here

我是否遗漏了任何东西,或者是在sencha touch中使用sql代理的正确方法吗?

2 个答案:

答案 0 :(得分:4)

如果您更改了模型(添加字段),则必须删除该表并重新创建它。 当您在数据存储区中添加新行时,请确保放置所有字段。

示例如果我的模型包含firstName,lastName,email:

// This one is not added cause email is absent
       Ext.getStore('Users').add([{
          firstName: 'Toto',
          lastName: 'test',
       }]);


// This one is added
       Ext.getStore('Users').add([{
          firstName: 'toto',
          lastName: 'test',
          email : 'toto@test.te'
       }]);

答案 1 :(得分:2)

我犯的错误是,我创建了我想要插入的记录的id,正如他们在该演示示例中所示,当我在

之后更改模型
    Ext.define("NotesApp.model.Note", {
    extend: "Ext.data.Model",
    config: {
        idProperty: 'id',
        fields: [
            { name: 'id', type: 'int' },
            { name: 'dateCreated', type: 'date', dateFormat: 'c' },
            { name: 'title', type: 'string' },
            { name: 'narrative', type: 'string' }
        ]
    }
});

    Ext.define('notesApp.model.Note', {
    extend : 'Ext.data.Model',
    config : {
        fields : [
            { name : 'dateCreated', type : 'string', dateFormat : 'D'},
            { name : 'title', type : 'string'},
            { name : 'narrative', type : 'string'}
        ],

        validations : [
            {type : 'presence', field : 'dateCreated'},
            {type : 'presence', field : 'title', message : 'Please enter a title for the note!'}
        ]
    }
});

一切正常。