Sencha Touch 2:localstorage创建多个ID

时间:2013-06-13 14:14:16

标签: extjs sencha-touch

我的用户具有以下配置:

identifier: 'uuid',
proxy: {
    type: 'localstorage',
    id: 'tm-user'
}

但是在我的本地存储中显示以下内容:

enter image description here

为什么每次保存用户个人资料时都会将ID添加到tm-user密钥?

如果有帮助,我每次都会覆盖用户吗?

                    // create user
                    var user = Tm.model.User.create({
                        id: response[0].id,
                        ...
                    });
                    user.save();

编辑:请求完整模型:

Ext.define('Tm.model.User', {
    extend: 'Ext.data.Model',

    config: {
        hasMany: { model: 'Tm.model.Exam', name: 'exams', autoLoad: true },

        fields: [
            { name: 'id', type: 'int' },
            { name: 'username', type: 'string' },
            { name: 'email', type: 'string' },
            { name: 'nameFirst', type: 'string' },
            { name: 'nameLast', type: 'string' },
            { name: 'syncedAt', type: 'date', defaultValue: null }
        ],

        validations: [
            { field: 'id', type: 'presence' },
            { field: 'username', type: 'presence' },
            { field: 'syncedAt', type: 'presence' },
            { field: 'email', type: 'presence' },
            { field: 'email', type: 'email' },
            { field: 'username', type: 'length', min: 3 }
        ],

        identifier: 'uuid',
        proxy: {
            type: 'localstorage',
            id: 'tm-user'
        }
    }
});

1 个答案:

答案 0 :(得分:2)

更改以下内容(如果您使用UUID类型应为字符串,而不是int。

{ name: 'id', type: 'string' }

更改标识符定义,如:

identifier: {
  type: 'uuid',
  isUnique: true
}

更新

由于您从服务器接收ID并且它们不是UUID,因此您可以尝试以下操作。将标识符配置更改为:

identifier: {
  type: 'sequential',
  isUnique: true
}

当然,在这种情况下,id的类型应为int。如果这不起作用,我建议仍然使用第一种方法(使用uuid),但是你在某个不同的字段(例如item_number)从服务器接收的存储ID,并让ST处理唯一的UUID字段。 / p>