需要注意的就是waterfall传入参数(使用第二个函数传入参数)、传出结果的方法。
var oracledb = require('oracledb'); var dbConfig = require('./dbconfig'); function doConnect(cb) { oracledb.getConnection( { user : dbConfig.user, password : dbConfig.password, connectString : dbConfig.connectString }, cb); }; function doRelease(conn) { conn.release(function (err) { if (err) console.error(err.message); }); }; function doQuery(conn,sql,param, cb) { console.log('sql='+sql+', param='+param); conn.execute( sql, param, { outFormat: oracledb.OBJECT }, function(err, result) { if (err) { return cb(err, conn); } else { return cb(null, conn,result.rows); } }); }; function select(sql,param,callback){ var async = require('async'); async.waterfall([ doConnect, function(conn,cb) { cb(null, conn, sql, param); }, doQuery ],function(err,conn,result){ if (err) { console.error("In waterfall error cb: ==>", err, "<=="); } else{callback(result);} if (conn){ doRelease(conn);} }); }; module.exports.select = select;
使用示例:
var dbUtil = require('./server/util/DbUtil');//上面的文件 dbUtil.select("select * from tab",{},function(result){ console.log(result); });