나는 쿼리를 실행하고, id를 얻고, for 루프로 3 개의 쿼리를 더 실행해야한다. 이 함수에서는 변수를 연결합니다. 그러나 중첩 된 쿼리 내의 값은 추가되지 않습니다. 이 문제에 대해 더 나은 해결책을 찾도록 도와주세요.Javascript에서 중첩 된 트랜잭션 쿼리를 코딩하는 방법은 무엇입니까?
db.transaction(function (tx) {
tx.executeSql('SELECT * FROM contacts ', [],
function (tx, results) {
for (var i = 0; i < results.rows.length; i++) {
var row = results.rows.item(i);
var ds = "";
ds += "";
ds += "BEGIN:VCARD\n"
ds += "VERSION:2.1\n"
ds += "N:" + row.last_name + ";" + row.first_name + ";" + row.middle_name + ";" + row.prefix + "\n"
ds += "FN:" + row.prefix + " " + row.first_name + " " + row.middle_name + " " + row.last_name + "\n"
ds += "ORG:" + row.company + "\n"
ds += "TITLE:" + row.title + "\n"
// append phone numbers
tx.executeSql("Select * from contact_details where contact_id='" + row._id + "' and data_type='1' ", [],
function (tx, resu) {
if (resu.length != 0) {
for (b = 0; b < resu.rows.length; b++) {
var myrow = resu.rows.item(b);
if (myrow.contact_type == "Home LandLine")
ds += "TEL;HOME;VOICE:" + myrow.contact_data + "\n"
if (myrow.contact_type == "Home Mobile")
ds += "TEL;HOME;CELL:" + myrow.contact_data + "\n"
if (myrow.contact_type == "Home Fax")
ds += "TEL;HOME;FAX:" + myrow.contact_data + "\n"
if (myrow.contact_type == "Work LandLine")
ds += "TEL;WORK;VOICE:" + myrow.contact_data + "\n"
if (myrow.contact_type == "Work Mobile")
ds += "TEL;WORK;CELL:" + myrow.contact_data + "\n"
if (myrow.contact_type == "Work Fax")
ds += "TEL;WORK;FAX:" + myrow.contact_data + "\n"
}
}
})
//ds+=$("#hidexport").text();
// append emails
tx.executeSql("Select * from contact_details where contact_id='" + row._id + "' and data_type='2' ", [],
function (tx, resuy) {
for (y = 0; y < resuy.rows.length; y++) {
var myrowy = resuy.rows.item(y);
ds += "EMAIL;INTERNET:" + myrowy.contact_data + "\n"
}
});
// append websites
tx.executeSql("Select * from contact_details where contact_id='" + row._id + "' and data_type='3' ", [],
function (tx, resuz) {
for (z = 0; z < resuz.rows.length; z++) {
var myrowz = resuz.rows.item(z);
ds += "URL:" + myrowz.contact_data + "\n"
}
});
// append address
ds += "ADR;WORK:" + row.company_add_1 + ";" + row.company_add_2 + ";" + row.company_city + ";" + row.company_region + ";" + row.company_state
ds += ";" + row.company_zip + ";" + row.company_country + "\n"
ds += "LABEL;WORK;ENCODING=QUOTED-PRINTABLE:" + row.company_add_1 + ";" + row.company_add_2 + ";" + row.company_city + ";"
ds += row.company_region + ";" + row.company_state + ";" + row.company_zip + "=0D=0" + row.company_country + "\n"
console.log(ds);
}
});
});
}
이 솔루션에 대한 선생님 감사합니다, 나는 그것이 작동 최초의 솔루션을 시도했다 – Bhavana