вот что я пытаюсь достичь, я собираюсь создать массив JSON как это:Как правильно создать вложенный json-массив при циклизации базы данных SQL в node.js?
[{
"KODE_CLAIM" : "MMKLKKK01",
"DETAILS" : {
"No_SVC" : "1233456789",
"Date_SVC" : "01-01-2016"
}
},
{
"KODE_CLAIM" : "MMKLKKK02",
"DETAILS" : {
"No_SVC" : "1233456789",
"Date_SVC" : "01-01-2016"
}
}]
это вложенная JSON, я получаю данные из SQL Server. Вот что я делаю:
exports.reportClaim = function(req, resp) {
var kode_bass = req.params.kode_bass
var tgl_Awal = req.params.tgl_Awal
var tgl_Akhir = req.params.tgl_Akhir
var hddt = []
var details = [];
console.log(kode_bass,tgl_Awal,tgl_Akhir);
db.executeSql("exec NG_CLAIM_REPORT_HD '" + kode_bass + "','" + tgl_Awal + "','" + tgl_Akhir + "'" , function(data, err) {
if (err) {
httpMsgs.show500(req, resp, err);
} else {
for(var i=0;i < data.length; i++){
console.log(data[i].KODE_CLAIM);
hddt.push(data[i].KODE_CLAIM)
db.executeSql("exec NG_CLAIM_REPORT_DT '" + data[i].KODE_CLAIM + "'" , function(data, err) {
if (err) {
httpMsgs.show500(req, resp, err);
} else {
for(var i=0;i < data.length; i++){
console.log(data.length);
hddt[details] = data;
console.log(hddt);
}
};
});
}
httpMsgs.sendJson(req, resp, hddt);
};
});
};
я сталкиваюсь с двумя проблемами, первый я не могу передать данные в hddt [] массив, а второй я думаю, что обратный вызов причина того, JSON уже отправить на веб-страницу, но для цикл задерживается, я думаю, потому что обратный вызов правильно?
, когда я сделать вторую петлю здесь:
db.executeSql("exec NG_CLAIM_REPORT_DT '" + data[i].KODE_CLAIM + "'" , function(data, err) {
if (err) {
httpMsgs.show500(req, resp, err);
} else {
for(var i=0;i < data.length; i++){
console.log(data.length);
hddt[details] = data;
}
};
});
ошибка в консоли сказал, «детали» не определен Как я могу исправить это? У меня есть другой способ выполнить SQL Server без обратного вызова? и как перенести мои данные второй хранимой процедуры в мой объект массива и вернуть его как JSON?
Ниже мой SQL данных, когда выполнить "NG_CLAIM_REPORT_HD" KODE_CLAIM 1 CLM/B094/1403/0001 2 CLM/B094/1403/0002
здесь мой SQL данных, когда выполнить "NG_CLAIM_REPORT_DT" с PARAM "CLM/B094/1403/0001"
KODE_CLAIM No_SVC Date_SVC
1. CLM/B094/1403/0001 SVC/B094/1401/0026 2014-01-20 00:00:00.000
2. CLM/B094/1403/0001 SVC/B094/1309/0003 2013-09-18 00:00:00.000
Когда я выполнить ИП NG_CLAIM_REPORT_DT с парам "CLM/B094/1403/0002"
KODE_CLAIM No_SVC Date_SVC
1. CLM/B094/1403/0002 SVC/B094/1312/0006 2013-12-16 00:00:00.000
2. CLM/B094/1403/0002 SVC/B094/1312/0005 2013-12-16 00:00:00.000
поэтому данные JSON я хочу это:
[{
"KODE_CLAIM" : "CLM/B094/1403/0001",
"DETAILS" : [
{
"No_SVC" : "SVC/B094/1401/0026",
"Tgl_SVC" : "2014-01-20 00:00:00.000"
},
{
"No_SVC" : "SVC/B094/1309/0003",
"Tgl_SVC" : "2013-09-18 00:00:00.000"
}
]
},
{
"KODE_CLAIM" : "CLM/B094/1403/0002",
"DETAILS" : [{
"No_SVC" : "SVC/B094/1312/0006",
"Tgl_SVC" : "2014-01-20 00:00:00.000"
},
{
"No_SVC" : "SVC/B094/1312/0005",
"Tgl_SVC" : "2013-09-18 00:00:00.000"
}
]
}]
'Я не могу вытолкнуть данные в hddt [] array' почему бы и нет? вы получаете ошибку на строке 'hddt.push (data [i] .KODE_CLAIM)? –
@JaromandaX извините, я добавил больше объяснений для более подробной информации, вы можете мне помочь? –
Это потому, что нигде в коде вы не указали переменную с именем 'details' –