gpt4 book ai didi

javascript - promise 问题 : Trying to wrap mysql queries to use it on NodeJS/Express

转载 作者:行者123 更新时间:2023-11-29 05:02:41 25 4
gpt4 key购买 nike

我的目标是包装 MySQL 查询,将参数传递给一个函数,然后另一个函数执行 MySQL 作业,返回结果。

到目前为止,这是我的代码:

//mysql lib
var mysql = require('mysql');

//database credentials
exports.pool = mysql.createPool({
connectionLimit: 50,
host: 'localhost',
user: 'root',
password: 'password',
database: '_app',
debug: false
});

//my wrapper =(
var returnResultset = exports.returnResultset = function (qry) {
return new Promise(function (resolve, reject) {
try {

mysql_.pool.getConnection(function (err, connection) {

if (err) {
console.log("Error on function returnResultset - MYSQL ERROR: " + err);
return reject(err);
}

connection.query(qry, [], function (error, results, fields) {

connection.release();

if (error) {
console.log("Error on function returnResultset - MYSQL ERROR: " + error);
return reject(error);
}

return resolve(results);

});

});

}
catch (e) {
console.log('error:' + e);
}
});

};

//wrapper function for testing purposes
var selectOneField = exports.selectOneField = function (tbl, field, pk, pkval) {

var qry_ = "SELECT " + field + " FROM " + tbl + " WHERE " + pk + " = '" + pkval + "'";

returnResultset(qry_).then(function (results) {
return results;
}, function (error) {
console.log("Error: " + error);
})

};

//...and on another page I want to be able to receive the results from the function above:

var isExpired = exports.isExpired = function (cod) {

var rtf = db_.selectOneField('view_expiredusers', 'cod', 'cod', cod);

console.log(rtf);

return rtf;

};

上面的代码返回undefined。我无法使此功能正常工作。

我试过 console.log(results)。查询就像一个魅力。我唯一无法开始工作的是从外部函数中获取结果。

有什么想法吗?提前致谢!

最佳答案

您应该返回 promise 并将其链接到 isExpired 函数中。

//wrapper function for testing purposes
var selectOneField = exports.selectOneField = function (tbl, field, pk, pkval) {

var qry_ = "SELECT " + field + " FROM " + tbl + " WHERE " + pk + " = '" + pkval + "'";

return returnResultset(qry_);

};

//...and on another page I want to be able to receive the results from the function above:

var isExpired = exports.isExpired = function (cod) {

return db_.selectOneField('view_expiredusers', 'cod', 'cod', cod)



};

当您在其他文件中调用 isExpired 时,您应该使用 promise 的 then 方法并返回结果。做如下

var cod_customer = 1;
var isexpired;
isExpired(cod_customer).then(function (results) {
isexpired = results;
console.log(isexpired);
}, function (error) {
console.log("Error: " + error);
});

关于javascript - promise 问题 : Trying to wrap mysql queries to use it on NodeJS/Express,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54996629/

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