gpt4 book ai didi

javascript - 返回未定义的 Node.js npm mssql 函数

转载 作者:搜寻专家 更新时间:2023-11-01 00:18:08 25 4
gpt4 key购买 nike

我正在使用带有 node.js 的 mssql 连接到 sql server 数据库。我试图通过将连接代码包装在一个具有一个查询参数的函数中来减少代码。当我在 router.get 函数中调用 with 函数时,它返回未定义。

如有任何帮助,我们将不胜感激。

function sqlCall(query) {
var connection = new sql.Connection(config, function(err) {
if (err) {
console.log("error1");
return;
}

var request = new sql.Request(connection); // or: var request = connection.request();
request.query(query, function(err, recordset) {
if (err) {
console.log("error2");
return;
}

return (recordset);
});
});
}

路由器代码

router.get('/', function(req, res) {

var queryString = "select * from .....";

res.json(sqlCall(queryString));

//sqlCall(queryString)

});

最佳答案

您试图将 sqlCall 视为具有返回值的同步函数,而相反的 request.query 函数是异步函数,期望回调.

由于 Node.js 使用非阻塞 IO 和回调结构进行流量控制,因此使用基于回调的异步结构是可行的方法。在您的情况下,这可能看起来像这样:

router.get('/', function(req, res) {


var queryString = "selec * from .....";
sqlCall(queryString, function(err, data) {
if (typeof err !== "undefined" && err !== null) {
res.status(500).send({
error: err
});
return;
}

res.json(data);
});
});

你的其他组件看起来像这样:

function sqlCall(query, cb) {
var connection = new sql.Connection(config, function(err) {
if (typeof err !== "undefined" && err !== null) {
cb( err );
return
}

var request = new sql.Request(connection); // or: var request = connection.request();
request.query(query, function(err, recordset) {
cb( err, recordset );
});

});

}

关于javascript - 返回未定义的 Node.js npm mssql 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28041975/

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