我正在用React / Express(NodeJS)/ Oracle开发一个应用程序,
我有一个从Oracle表中获取数据的快速路由,
下面是路由中的部分代码:
let conn;
try {
conn = await oracledb.getConnection(config);
const result = await conn.execute("select JSON_OBJECT ('departement' VALUE departement, 'ufh' VALUE ufh, 'libelle' VALUE libelle, 'nomhopital' VALUE nomhopital, 'typeservice' VALUE typeservice, 'actif' VALUE actif) from Z_SOUPAP2CARTESITE where actif=1");
res.send(result.rows);
}
但当我在浏览器中浏览路线时,数据具有以下形状:
[["92","028X362","ABC ACCUEIL URG MEDECINE","ANTOINE BECLERE","ADULTE",1],["92","028X472","ABC URGENCES PEDIATRIQUE","ANTOINE BECLERE","PEDIATRIE",1],["92","014X545","APR ACCEUIL URGENCES ADU","AMBROISE PARE","ADULTE",1]]
我想要这个:
[
{"departement":"92","ufh":"028X362","libelle":"ABC ACCUEIL URG MEDECINE","nomhopital":"ANTOINE BECLERE","typeservice":"ADULTE","actif":1},
{"departement":"92","ufh":"028X472","libelle":"ABC URGENCES PEDIATRIQUE","nomhopital":"ANTOINE BECLERE","typeservice":"PEDIATRIE","actif":1}
]
2条答案
按热度按时间vyswwuz21#
为什么要使用JSON_VALUE?驱动程序返回本地JavaScript对象。可以将查询编写为:
在上面的查询中,用双引号括起来的列别名用于控制键的大小写。
默认情况下,驱动程序返回一个数组的数组(没有键)。如果你想要一个对象的数组,你需要传递一个选项对象给
execute
,它会改变outFormat
。请参阅文档的这一部分:https://oracle.github.io/node-oracledb/doc/api.html#queryoutputformats下面是文档中的一个示例:
如果要在Oracle中使用JSON生成函数(如JSON_VALUE),则必须避免双重解析-只需以JSON形式访问字符串。
有关使用Node.js和Oracle数据库构建REST API的更多信息,请参见本系列文章:https://jsao.io/2018/03/creating-a-rest-api-with-node-js-and-oracle-database/
s5a0g9ez2#
下面的解决方案对我很有效: