无法使用promise终止mysql连接

时间:2017-05-17 07:46:44

标签: node.js promise jasmine mysql2

以下是我的代码,请查看。

var mysql = require('promise-mysql');
var connection;

mysql.createConnection({host:'Ip', user:'qa', password: '******'}).then(function(conn){
connection = conn;
return connection.query(firstInput);
})
.then(function(rows){
console.log(rows);
})

.then(function(){
console.log("End of DB Con.");
return connection.end();

})
.catch(function(error){
//logs out the error
console.log(error);
});

一旦我尝试执行不同Jasmine测试的代码,一切正常,因为它从DB获取记录但是当执行最后一个jasmine测试时,它保留了在最后一次测试中执行的第二个查询的记录。这是确切的问题!

=============================================== ========================== 添加了与此问题相关的更多详细信息:

关注我从DB获取记录的代码:

1)与DB连接和查询相关的第一个功能:

function dbMySqlInteraction (query, callback) {
Promise = require('bluebird');
var mysql = Promise.promisifyAll(require('mysql'));
var connection = mysql.createConnection({host:'ip', user:'qa', 
password:'*********'});

connection.query(query, function (err, results, fields) {
callback(results);
}); 

2)下面提到的代码将打印从db获取的记录,然后打印PHPSESSID比较:

dbMySqlInteraction(query, function(cBT){

var lastRow = cBT[cBT.length-1];

////////////////// Print Stats ////////////////////////////////
//console.log(lastRow.stats_datetime);
console.log('Stats recorded/fetched from DB as: ');
allure.createStep('Stats recorded/fetched from DB as: ', function(){

for (var key in lastRow) {
if (lastRow.hasOwnProperty(key)) {
allure.createStep(key +': ' + lastRow[key], function(){})();
console.log(key +': ' + lastRow[key]);
}
}
})();

browser.sleep(2000);
////////////////// PHPSESSID Comparison ///////////////////////////////
browser.manage().getCookie("PHPSESSID").then(function(cookies) {
console.log('Got Browser PHPSESSID As: ', cookies.value);
allure.createStep('Got Browser PHPSESSID As: ' + cookies.value, function(
{})();

var dBSessionID = lastRow.session_id;

console.log("DB Session ID: " + dBSessionID);
allure.createStep("DB Session ID: " + dBSessionID, function(){})();

console.log('Stats recorded time: ' + lastRow.stats_datetime);
allure.createStep('Stats recorded time: ' + lastRow.stats_datetime, 
function(){})();

expect(cookies.value).toEqual(dBSessionID);
});
});
//connection.end();
browser.sleep(2000);

我需要执行上面提到的所有代码作为每个茉莉花测试的一部分,但有时从早期的Jasmine测试获取的“dBSessionID”将保留在即将到来的茉莉花测试中,根据断言它将被标记为失败,因为不等于浏览器的PHPSESSID。

0 个答案:

没有答案