gpt4 book ai didi

mysql - 如何从 var require 导入函数值?

转载 作者:行者123 更新时间:2023-11-30 01:15:18 24 4
gpt4 key购买 nike

我有这个代码:服务器.js:

var sql             = require('./libs/mysql');
app.get('/status', function(req, res) {
res.send(sql.readName('1600'));
});

mysql.js:

exports.readName = function(name){

var connection = mysql.createConnection(option);
connection.connect();
connection.query('SELECT id FROM asterisk.users WHERE name= '+name, function (err, rows, fields) {


console.log('mysql: ' +rows[0].id);
return(rows[0].id);

});

现在,当我发送 GET http://mydomain.com/status 时我无法收到回复。但在控制台日志中我看到正确的答案。我的错误在哪里?

最佳答案

node.js 中的大多数磁盘读取/数据库访问都是异步完成的。这使得 Node.js 能够像它声称的那样快。您需要使用回调函数来处理这些读取操作的结果。如果您熟悉 ajax,那么概念是相似的。

您正在从异步运行的 connection.query 返回。这是无处返回的。 readName 实际上什么也不返回。您需要做的实际上是传入返回值的回调:

app.get("/status", function (req, res) {
sql.readName("1600", function (err, rows, fields) {
/* handle err */

res.send(rows[0].id);
});
});

当然必须调用这个回调:

exports.readName = function (name, cb) {
/* snip */
connection.query(query + name, cb);
});

关于mysql - 如何从 var require 导入函数值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19119928/

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