带有 oracledb 的量角器,从 oracle db 获取值后无法从其他函数访问该值
Protractor with oracledb, after fetching value from oracle db unable to access the valu from other function
我正在尝试编写可重用函数以从 oracledb 获取值并在需要时分配该值。
我的示例代码如下。
//getTtalRwCnt.js
'use strict';
var db_con = require('./oracleConnectPage.js');
// var db = new db_con();
var OracelQP = db_con.getOracleQP_details();
var oracledb = require('oracledb');
var tmpRwCnt;
var getTtalRwCnt = function () {
oracledb.outFormat = oracledb.ARRAY;
var query = "SELECT TESTCASEID FROM EXECUTE_TESTCASE";
oracledb.getConnection(OracelQP, function (err, connection) {
if (err) {
console.error(err.message); return;
}
connection.execute(query, function (err, result) {
if (err) {
console.error(err.message);
connection.close();
return;
}
console.log("result----->" + result.rows.length);
tmpRwCnt = result.rows.length;
return tmpRwCnt;
})
})
}
module.exports.getTtalRwCnt = getTtalRwCnt();
//spec.js
'use strict';
var rwCnt = require('../DBSample/DB/getTtalRwCnt.js');
describe('Get Total number of Rows from DB', function () {
it('Get Rw count',function(){
console.log(rwCnt.getTtalRwCnt());
});
});
您的代码中有两个问题:
1)导出错误
module.exports.getTtalRwCnt = getTtalRwCnt();
应该是
module.exports.getTtalRwCnt = getTtalRwCnt;
2) tmpRwCnt
是回调函数的return值,不是getTtalRwCnt
函数的return值,另外你没有 return 函数 getTtalRwCnt
.
要使回调函数中的值可以在回调外使用,可以选择使用Promise解决方案。
'use strict';
var db_con = require('./oracleConnectPage.js');
// var db = new db_con();
var OracelQP = db_con.getOracleQP_details();
var oracledb = require('oracledb');
var getTtalRwCnt = function () {
return new Promise(function(resolve, reject){
oracledb.outFormat = oracledb.ARRAY;
var query = "SELECT TESTCASEID FROM EXECUTE_TESTCASE";
oracledb.getConnection(OracelQP, function (err, connection) {
if (err) {
console.error(err.message);
reject(err);
}
connection.execute(query, function (err, result) {
if (err) {
console.error(err.message);
connection.close();
reject(err);
}
rwCnt = result.rows.length;
console.log("result----->" + rwCnt);
resolve(rwCnt);
})
})
});
};
module.exports = getTtalRwCnt;
//spec.js
'use strict';
var getTtalRwCnt = require('../DBSample/DB/getTtalRwCnt.js');
describe('Get Total number of Rows from DB', function () {
it('Get Rw count',function(){
var totalRw = getTtalRwCnt();
// If you use Jasmine or Chai
totalRw.then(function(total){
console.log('total row: ' + total);
expect(total).toEqual(10);
});
// if you use Jasmine
expect(totalRw).toEqual(10);
// if you use Chai and Chai-as-promise
expect(totalRw).to.eventually.to.equal(10);
});
});
我正在尝试编写可重用函数以从 oracledb 获取值并在需要时分配该值。
我的示例代码如下。 //getTtalRwCnt.js
'use strict';
var db_con = require('./oracleConnectPage.js');
// var db = new db_con();
var OracelQP = db_con.getOracleQP_details();
var oracledb = require('oracledb');
var tmpRwCnt;
var getTtalRwCnt = function () {
oracledb.outFormat = oracledb.ARRAY;
var query = "SELECT TESTCASEID FROM EXECUTE_TESTCASE";
oracledb.getConnection(OracelQP, function (err, connection) {
if (err) {
console.error(err.message); return;
}
connection.execute(query, function (err, result) {
if (err) {
console.error(err.message);
connection.close();
return;
}
console.log("result----->" + result.rows.length);
tmpRwCnt = result.rows.length;
return tmpRwCnt;
})
})
}
module.exports.getTtalRwCnt = getTtalRwCnt();
//spec.js
'use strict';
var rwCnt = require('../DBSample/DB/getTtalRwCnt.js');
describe('Get Total number of Rows from DB', function () {
it('Get Rw count',function(){
console.log(rwCnt.getTtalRwCnt());
});
});
您的代码中有两个问题:
1)导出错误
module.exports.getTtalRwCnt = getTtalRwCnt();
应该是
module.exports.getTtalRwCnt = getTtalRwCnt;
2) tmpRwCnt
是回调函数的return值,不是getTtalRwCnt
函数的return值,另外你没有 return 函数 getTtalRwCnt
.
要使回调函数中的值可以在回调外使用,可以选择使用Promise解决方案。
'use strict';
var db_con = require('./oracleConnectPage.js');
// var db = new db_con();
var OracelQP = db_con.getOracleQP_details();
var oracledb = require('oracledb');
var getTtalRwCnt = function () {
return new Promise(function(resolve, reject){
oracledb.outFormat = oracledb.ARRAY;
var query = "SELECT TESTCASEID FROM EXECUTE_TESTCASE";
oracledb.getConnection(OracelQP, function (err, connection) {
if (err) {
console.error(err.message);
reject(err);
}
connection.execute(query, function (err, result) {
if (err) {
console.error(err.message);
connection.close();
reject(err);
}
rwCnt = result.rows.length;
console.log("result----->" + rwCnt);
resolve(rwCnt);
})
})
});
};
module.exports = getTtalRwCnt;
//spec.js
'use strict';
var getTtalRwCnt = require('../DBSample/DB/getTtalRwCnt.js');
describe('Get Total number of Rows from DB', function () {
it('Get Rw count',function(){
var totalRw = getTtalRwCnt();
// If you use Jasmine or Chai
totalRw.then(function(total){
console.log('total row: ' + total);
expect(total).toEqual(10);
});
// if you use Jasmine
expect(totalRw).toEqual(10);
// if you use Chai and Chai-as-promise
expect(totalRw).to.eventually.to.equal(10);
});
});