База данных для приложения Sencha Touch + Phonegap

Привет, в настоящее время я использую LocalStorage в своем Sencha Touch + Phonegap в своем приложении и загружаю более 4000+ записей, полученных из WCF Rest. В режиме разработки у меня нет проблем с его запуском в Google Chrome, но когда я упаковал его и установил на устройство iOS8, мое приложение вылетает.

Ниже приведена общая длина localStorage в консоли:

>JSON.stringify(localStorage).length
> 2917665

Модель:

Ext.define("QualityAudit.model.DefectMatrix", {
    extend: "Ext.data.Model",
    config: {
        identifier: { type: 'uuid', isUnique: true },
        fields: [
                { name: "DefectMatrixID", type: "integer" },
                { name: "CustomerID", type: "integer" },
                { name: "CustomerName", type: "string" },
                { name: "DefectType", type: "integer" },
                { name: "DefectTypeName", type: "string" },
                { name: "Reference", type: "string" },
                { name: "Section", type: "string" },
                { name: "DefectDescription", type: "string" },
                { name: "SeverityID", type: "integer" },
                { name: "SeverityName", type: "string" },
                { name: "IsActive", type: "bool" },
                { name: "CreatedBy", type: "string" },
                { name: "CreatedDate", type: 'date', dateFormat: 'MS' }
        ]
    }
});

Магазин:

 defectSync: function (counter, totRecords, callback) {
    var me = this;
    if (counter == undefined)
        counter = 0;


    //load defect matrix local local storage

    var defectsLocalStore = Ext.getStore('DefectMatrix');
    defectsLocalStore.load();

        var defectssurl = window.REST_DMGetListAllPaging + counter;
        QualityAudit.util.Proxy.doAjaxCall(defectssurl, '',
        function (response) {

            var data = Ext.JSON.decode(response.responseText); //encode Json List


            defectsLocalStore.load({
                callback: function (records, operation, success) {
                    Ext.Array.each(data, function (record) {
                        counter++;
                        record.dirty = true;
                        defectsLocalStore.add(record);
                        defectsLocalStore.sync();
                    });

                    console.log('DECFECT DATA AFTER SYNC: ' + defectsLocalStore.getData().length);

                    //Check if all records  loaded on local storage is equail to total defect rows then complete
                    if (defectsLocalStore.getData().length >= totRecords) {
                        console.log('defect loading successfull');
                        callback();
                    } else {
                        //Trigger again until condition is met
                        me.defectSync(counter, totRecords, callback);
                    }

                },
                scope: this
            });


        },
        function (response) {
            defectsLocalStore.load();
            callback(0);
        });

}

Кто-нибудь пробовал использовать webSQL или SQLlite в ваших проектах? Я не могу найти хороший образец на этом.

Любая помощь и предложения очень ценятся.


person BizApps    schedule 24.01.2015    source источник


Ответы (2)


Я использую SQLite почти в каждом своем проекте. ИМХО, лучший плагин - это Cordova/PhoneGap SQLitePlugin.

На странице вы найдете несколько примеров того, как использовать плагин и как использовать SQLite в Cordova.

person Joerg    schedule 24.01.2015
comment
Привет @Joerg, ты все еще используешь магазин сенчи, если уже используешь sqlite? - person BizApps; 26.01.2015
comment
Нет, извините. Я не пользуюсь магазином сенча. - person Joerg; 26.01.2015
comment
Можете ли вы привести какой-нибудь пример кода для заполнения представления сенсорного списка Sencha? Спасибо - person BizApps; 26.01.2015
comment
Нет, я не могу. Я не использую сенчу, и я написал свой собственный список. Причина проста: у меня много записей в моих приложениях, а просмотры списков, которые я обнаружил, работают медленно. Итак, я написал один, где в представлении отображаются только необходимые записи. - person Joerg; 26.01.2015
comment
О, хорошо, @Joerg Большое спасибо; В настоящее время я использую Secha Touch + Phonegap для своего приложения. - person BizApps; 26.01.2015

Вы можете использовать store с прокси: 'sql', он создаст локальную базу данных, используя WebSQL. Документ по прокси-серверу sql

person Naresh Tank    schedule 26.01.2015