Я в html5-проекте, использующем базу данных web sql.
У меня есть 2 таблицы.
Таблица продуктов
Ценовой стол
Товар может иметь несколько цен с разными датами.
Я пробовал что-то вроде этого:
bd.x.transaction(function (tx) {
tx.executeSql('SELECT * FROM Products WHERE id = ?', intProductId,
function (tx, rs) {
if (rs.rows.length > 0) {
var objProduct = new clsProduct();
objProduct.setId(rs.rows.item(0).id);
objProduct.setName(rs.rows.item(0).name);
// Query Price Start
bd.x.transaction(function (tx) {
tx.executeSql('SELECT * FROM Prices WHERE product_id = ?', intProductId,
function (tx, rs) {
var x = rs.rows.length;
if (x > 0) {
var arrResult = [];
for (var i = 0; i < x; i++) {
arrResult[i] = new clsPrice();
arrResult[i].setId(rs.rows.item(i).id);
arrResult[i].setDate(rs.rows.item(i).date);
arrResult[i].setPrice(rs.rows.item(i).price);
}
// set prices
objProduct.setPrice(arrResult);
}
},
bd.onError
);
});
// Query Price End
}
},
bd.onError
);
});
Проблема заключается в том, что запрос Product завершается до завершения запроса Price, а objProduct.getPrice () возвращает undefined.
Если я добавлю предупреждение в запросе цены, записи будут найдены, и я смогу увидеть результат.
Как я могу это сделать?
Спасибо.