У меня есть веб-приложение Blackberry Webworks, работающее под BB5, которое хранит данные локально, используя базу данных SQLite.В базе данных есть две таблицы: событие и полет, где с одним событием может быть связано много рейсов.
Мне трудно понять, как заполнить обе таблицы из массива данных.Моя проблема в том, чтобы заставить внешний ключ вставлять в таблицу рейсов из-за асинхронного способа, которым работает реализация SQLite в BB.
db.transaction(function(tx) {
for(var i = 0; i < eventsArray.length; i++) {
var insertId = 0;
tx.executeSql("INSERT INTO event(id,eventName,venueName) VALUES (?,?,?)",
[null,
eventsArray[i].eventName,
eventsArray[i].venueName],
function(tx,result) { //success callback
insertId = result.insertId;
//If I try inserting flights here, eventsArray[i] always returns
//the last item in the array, the for loop has kept running
}
);
//If I try inserting here, I don't have the insertId
//to populate the foreign key (still set to 0 as the
//callbacks haven't fired yet)
}
Так что, кажется, везде, где я пытаюсь выполнить запрос на вставку для рейсов,Я скучаю по части данных.Либо идентификатор вставки, либо фактический объект события, содержащий полеты, которые мне нужно вставить.
Есть ли лучший способ сделать это?