gpt4 book ai didi

mysql - node.js mysql 结果变成一个变量

转载 作者:行者123 更新时间:2023-11-28 23:12:37 25 4
gpt4 key购买 nike

我一直在使用 mountebank 为性能测试做一些 stub ,它是一个很棒的工具。职能团队询问是否可以将其重新用于支持功能测试,我说我会看看。

我想要实现的是从一个mysql数据库中选择一个账号和它的账户余额,然后将余额返回给客户端(在本例中是一个jmeter harness)

function (request, state, logger) {

logger.info('GBG - getAccountBalance');

var mysql = require('mysql');
var result = '';

var con = mysql.createConnection({
host: "localhost",
user: "user",
password: "password",
database: "customer"
});

con.connect(function(err) {
if (err) throw err;
console.log("Connected!");
});

con.query('select * from accounts', function (err, rows, fields) {
if (err) throw err;
console.log(rows);
console.log('accountNumber is : ', rows[0].accountNumber);
result = rows[0].accountNumber;
});

console.log('result is : ', result);
var response = result;

return {
headers: {
'Content-Type': 'application/xml',
'Connection': 'Keep-Alive'
},
body: response
};

}

控制台日志的结果是:

result is :
Connected!
[ RowDataPacket { accountNumber: 777777, accountBalance: 777 } ]
accountNumber is : 777777

不确定我做错了什么以及为什么结果是:尽管行在代码的后面,但行首先出现。

感谢任何建议。

完全公开,我已经使用 mountebank 大约两周了,所以我是一个真正的初学者。

最佳答案

connectquery 中的function 关键字称为回调,仅在函数本身完成后执行。所以你的代码看起来像:

con.connect(function(err) {
if (err) throw err;
console.log("Connected!");


con.query('select * from accounts', function (err, rows, fields) {
if (err) throw err;
console.log(rows);
console.log('accountNumber is : ', rows[0].accountNumber);
result = rows[0].accountNumber;

console.log('result is : ', result);
var response = result;
});
});

等等,但你刚刚介绍了callback hell到你的代码。
async是你的 friend 。


编辑:下面是一个例子:

async.waterfall([
function (callback) {
//do some async function here
con.connect(function(err) {
if (err) throw err;
console.log("Connected!");
//call this when you are done
//you can even pass param to next function
callback(null,true);
});
},function (isConnected,callback1) {
if !(isConnected){
console.log("Connection failed! Skipping Query...")
callback1(null,"Error");
}
//do another async function here:
con.query('select * from accounts', function (err, rows, fields) {
if (err) throw err;
console.log(rows);
console.log('accountNumber is : ', rows[0].accountNumber);
result = rows[0].accountNumber;
callback1(null,"Complete");
});
}
], function (err,result) {
if(result == "Error"){
alert("Someting went wrong!");
}
if(result == "Complete"){
alert("Done!");
}
return 0;
});

注意:有段时间没写JS了。从一些现有代码中写出来并且没有经过测试。此外,Promise 也有帮助,但还没有亲自调查过。 BlueBird 是一个图书馆。

关于mysql - node.js mysql 结果变成一个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45271087/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com