nodejs使用oracledb时,读取Blob和Clob字段遇到的问题

使用nodeJs+express+oracledb时,需要读取clob字段,花费了许多时间。因为网上没有现成的东西,只好自己看oracledb在github上的文档,终于找到了解决办法。
参考网址:
oracledb说明文档
oracledb中对lob字段的处理

主要的代码是下边的两行,将BLOB和CLOB统一转为oracledb指定的类型即可

oracledb.fetchAsBuffer = [ oracledb.BLOB ];
oracledb.fetchAsString = [ oracledb.CLOB ];

解决之后的代码如下

let util = require('util');
let dbUtil = require('../util');
let oracledb = require('oracledb');

let dbConfig = {
    user: 'test',
    password: '1',
    connectString: '127.0.0.1:1521/ORCL'
};
//主要是这两行,在oracledb的文档中其实也有其它方法
//但是为了封装方法,采用如下方法统一处理
oracledb.fetchAsBuffer = [ oracledb.BLOB ];
oracledb.fetchAsString = [ oracledb.CLOB ];

function executeQuery(sql, paramArr) {
    return function (callback) {// 这里是给async提供的回调
        oracledb.getConnection(dbConfig,
            function (err, connection) {
                if (err) {
                    console.error(err.message);
                    return;
                }
                connection.execute(
                    sql,
                    paramArr,
                    function (err, result) {
                        if (err) {
                            console.error(err.message);
                            return;
                        }
                        doRelease(connection);
                        let r = dbUtil.toObjList(result);
                        return callback(err, r);
                    });
            });
    }
}

function doRelease(connection) {
    connection.close(
        function (err) {
            if (err)
                console.error(err.message);
        });
}

module.exports = {executeQuery};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值