Por que você está usando JSON_VALUE? O driver retorna objetos JavaScript nativos. Você poderia escrever a consulta como:
select department "department",
ufh "ufh",
libelle "libelle",
nomhopital "nomhopital",
typeservice "typeservice"
from Z_SOUPAP2CARTESITE
where actif=1
Na consulta acima, os aliases de coluna com aspas duplas são usados para controlar o caso das chaves.
Por padrão, o driver retorna uma matriz de matrizes (sem chaves). Se você quiser um array de objetos, você precisa passar um objeto de opções para
execute
que altera o outFormat
. Veja esta parte do documento:https://oracle.github. io/node-oracledb/doc/api.html#queryoutputformats
Aqui está um exemplo do doc:
const result = await connection.execute(
`SELECT department_id, department_name
FROM departments
WHERE manager_id < :id`,
[110], // bind value for :id
{ outFormat: oracledb.OUT_FORMAT_OBJECT }
);
console.log(result.rows);
Se você quiser usar as funções de geração de JSON no Oracle, como JSON_VALUE, você deve evitar uma análise dupla - basta acessar a string como JSON.
Consulte esta série para obter mais informações sobre como criar uma API REST com Node.js e Oracle Database:https://jsao.io/2018/03/creating-a-rest-api-with-node-js-and-oracle-database/