-1
I created a Node js API connected to Oracle 12.1.0.1.0c where I connect and do the request as follows through the dbconection.js file as shown below:
const oracledb = require('oracledb');
const { json } = require('body-parser');
module.exports = async function retornaPerguntas(req, res) {
var password = 'dbaadv'
try {
connection = await oracledb.getConnection({
user: "dbaadv",
password: password,
connectString: "(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=<ip>)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=prd)))"
});
// Executa a query para retornar as altas
sql = " SELECT PER.CD_QUESTAO, " +
" PER.DS_QUESTAO, " +
" PER.TP_QUESTAO, " +
" PER.DS_SETOR, " +
" PER.SN_ATIVO, " +
" PER.NR_ORDEM " +
" FROM PERGUNTAS_PESQUISA_NPS PER " +
" WHERE PER.SN_ATIVO = 'S' " +
" ORDER BY 6 ";
result = await connection.execute(sql);
const objResult = await montaArrayObjetos(result.metaData,result.rows)
console.log(objResult);
//console.log(result.metaData);
} catch (err) {
//mensagem de erro
return res.send(err.message);
} finally {
if (connection) {
try {
// Sempre fechar a conexão
await connection.close();
console.log('conexão fechada com sucesso');
} catch (err) {
console.error(err.message);
}
}
if (result.rows.length == 0) {
//Caso retorne nenhum resultado
return res.send('Não há nada para retornar');
} else {
//Retorna todas as altas
return res.send(JSON.parse(JSON.stringify(arrObjects)));
}
}
}
Executing this application the function above returns the JSON in this format below due to the version of the database.
{
"metaData": [
{
"name": "CD_QUESTAO"
},
{
"name": "DS_QUESTAO"
},
{
"name": "TP_QUESTAO"
},
{
"name": "DS_SETOR"
},
{
"name": "SN_ATIVO"
},
{
"name": "NR_ORDEM"
}
],
"rows": [
[
8,
"Em uma escala de 0 a 10; o quanto você recomendaria o Loja A ou amigo?",
"NOTA",
"SERVICOS",
"S",
10
],
[
9,
"1. Em uma escala de 0 a 10; como você avalia o *atendimento A*?",
"NOTA",
"SERVICOS",
"S",
20
],
[
10,
"2. Em uma escala de 0 a 10; como você avalia o *atendimento da B*?",
"NOTA",
"SERVICOS",
"S",
30
],
[
11,
"3. Em uma escala de 0 a 10 como vc avalia o atendimento dos *Serviços C*?",
"NOTA",
"SERVICOS",
"S",
40
],
[
12,
"Finalizando a pesquisa; em uma breve mensagem; informe as principais ações corretivas que você nos recomenda.",
"OBSERVACAO",
"SERVICOS",
"S",
50
],
[
14,
"A Loja A agradece sua participação",
"OBSERVACAO",
"SERVICOS",
"S",
60
]
]
}
How could I standardize this structure in javascript above in the JSON standard format as shown below? I tried some ways, but to no avail !!!
{
{
"CD_QUESTAO": 8,
"DS_QUESTAO": "Em uma escala de 0 a 10; o quanto você recomendaria o Loja A ou amigo?",
"TP_QUESTAO": "NOTA",
"DS_SETOR": "SERVICOS",
"SN_ATIVO": "S",
"NR_ORDEM": 10
},
{
"CD_QUESTAO": 9,
"DS_QUESTAO": "1. Em uma escala de 0 a 10; como você avalia o *atendimento A*?",
"TP_QUESTAO": "NOTA",
"DS_SETOR": "SERVICOS",
"SN_ATIVO": "S",
"NR_ORDEM": 20
},
{
"CD_QUESTAO": 10,
"DS_QUESTAO": "2. Em uma escala de 0 a 10; como você avalia o *atendimento da B*?",
"TP_QUESTAO": "NOTA",
"DS_SETOR": "SERVICOS",
"SN_ATIVO": "S",
"NR_ORDEM": 30
},
{
"CD_QUESTAO": 11,
"DS_QUESTAO": "3. Em uma escala de 0 a 10 como vc avalia o atendimento dos *Serviços C*?",
"TP_QUESTAO": "NOTA",
"DS_SETOR": "SERVICOS",
"SN_ATIVO": "S",
"NR_ORDEM": 40
},
{
"CD_QUESTAO": 12,
"DS_QUESTAO": "Finalizando a pesquisa; em uma breve mensagem; informe as principais ações corretivas que você nos recomenda.",
"TP_QUESTAO": "OBSERVACAO",
"DS_SETOR": "SERVICOS",
"SN_ATIVO": "S",
"NR_ORDEM": 50
},
{
"CD_QUESTAO": 14,
"DS_QUESTAO": "A Loja A agradece sua participação",
"TP_QUESTAO": "OBSERVACAO",
"DS_SETOR": "SERVICOS",
"SN_ATIVO": "S",
"NR_ORDEM": 60
}
}
I tried to solve the problem by creating a function montaArrayObjects that receives the arrays of KEYS and VALUES as below:
async function montaArrayObjetos(objResultColunas,objResultlinhas){
/*
'CD_QUESTAO': result.rows[i][i],
'DS_QUESTAO': result.rows[i][i],
'TP_QUESTAO': result.rows[i][i],
'DS_SETOR': result.rows[i][i],
'SN_ATIVO': result.rows[i][i],
'NR_ORDEM': result.rows[i][i],
*/
let tamObjResulcolunas = objResultColunas.length;
let tamObjResultlinhas = objResultlinhas.length;
let arrObjects = new Array();
var obj = new Array();
var propriedades = "";
var objDados ={};
//linhas
for (let lin = 0; lin < tamObjResultlinhas; lin ++){
//console.log(objResultlinhas[lin]);
//Colunas
for(let cols = 0; cols < tamObjResulcolunas; cols ++){
//console.log(`cols: ${cols} tamObjResulcolunas: ${tamObjResulcolunas} lin: ${lin} tamObjResultlinhas: ${tamObjResultlinhas}`)
//console.log(`'${objResultColunas[cols].name}':${objResultlinhas[lin][cols]}` + (cols == 5 ? '' : ',')) ;
if(cols <= tamObjResulcolunas-1){
//obj.push(`'${objResultColunas[cols].name}':${objResultlinhas[lin][cols]}` + (cols == 5 ? '' : ','));
console.log(`'${objResultColunas[cols].name}':${objResultlinhas[lin][cols]}` + (cols == 5 ? '' : ','));
//arrObjects.push(obj);
}
}
console.log('FIM');
//console.log(obj);
//arrObjects.push(obj);
}
//console.log(arrObjects);
return arrObjects;
}
When I put to print the return of this function returns like this:
'CD_QUESTAO':8,
'DS_QUESTAO':Em uma escala de 0 a 10; o quanto você recomendaria o Loja A ou amigo?,
'TP_QUESTAO':NOTA,
'DS_SETOR':SERVICOS,
'SN_ATIVO':S,
'NR_ORDEM':10
FIM
'CD_QUESTAO':9,
'DS_QUESTAO':1. Em uma escala de 0 a 10; como você avalia o *atendimento A*?,
'TP_QUESTAO':NOTA,
'DS_SETOR':SERVICOS,
'SN_ATIVO':S,
'NR_ORDEM':20
FIM
'CD_QUESTAO':10,
'DS_QUESTAO':2. Em uma escala de 0 a 10; como você avalia o *atendimento da B*?,
'TP_QUESTAO':NOTA,
'DS_SETOR':SERVICOS,
'SN_ATIVO':S,
'NR_ORDEM':30
FIM
'CD_QUESTAO':11,
'DS_QUESTAO':3. Em uma escala de 0 a 10 como vc avalia o atendimento dos *Serviços C*?,
'TP_QUESTAO':NOTA,
'DS_SETOR':SERVICOS,
'SN_ATIVO':S,
'NR_ORDEM':40
FIM
'CD_QUESTAO':12,
'DS_QUESTAO':Finalizando a pesquisa; em uma breve mensagem; informe as principais ações corretivas que você nos recomenda.,
'TP_QUESTAO':OBSERVACAO,
'DS_SETOR':SERVICOS,
'SN_ATIVO':S,
'NR_ORDEM':50
FIM
'CD_QUESTAO':14,
'DS_QUESTAO':A Loja A agradece sua participação,
'TP_QUESTAO':OBSERVACAO,
'DS_SETOR':SERVICOS,
'SN_ATIVO':S,
'NR_ORDEM':60
FIM
However, I cannot separate the records where the ID is CD_QUESTAO and convert it to JSON
It’s just a case of iterating over the array and mounting the objects. What you tried?
– Andre
I added a function I created where it receives the array of keys and values and the return of it
– moises.santos
My difficulty was juxtaposing add the properties to the object, very good their adaptation, thank you !!!
– moises.santos