Можете ли вы вернуть SQLResultSet с JavaScript из базы данных SQLite? - PullRequest
0 голосов
/ 14 ноября 2010

Я пытаюсь создать небольшой плагин, который немного облегчит работу с базами данных SQLite.У меня есть базовые функции CRUD, за исключением выбора данных из базы данных.

Я хотел бы вернуть выбранные данные из функции executeSql, но, похоже, все, что я могу сделать, это вызвать другой метод, а не просто вернутьданные.

Итак, что я хотел бы сделать:

var data = $(window).dbPlugin( 'select', '*', 'tableName', 'conditions' );

Затем я бы хотел работать с переменной data в качестве SQLResultSet из запроса.Однако транзакция, кажется, позволяет мне только вызывать метод обработчика данных, а не просто возвращать результат.

testDB.transaction(  
    function ( transaction ) {  
        transaction.executeSql( sql, [], dataHandler, errorHandler);  
    }  
);

function dataHandler( transaction, results ) {
    // Now I can work with the "results" as the SQLResultSet
}

Есть идеи, как просто вернуть выбранные данные или, если это вообще возможно?

1 Ответ

0 голосов
/ 14 ноября 2010

SQLlite является асинхронным, и не существует способа избежать этого.Вы можете передать функцию, которую хотите вызвать в качестве обратного вызова, в ваш метод .dbPlugin.После того, как условия передают другое значение, которое является функцией, вызываемой после выполнения запроса.Затем установите данные в своей функции обратного вызова.

Это довольно раздражает, я недавно написал что-то вроде того, что вы пишете в моем последнем проекте.Я использовал плагин jQuery под названием blockUI, который по существу блокировал бы интерфейс во время вызовов SQL, что делало его немного более «синхронным»

Удачи.

...