尝试使用路由中的函数从MySql返回一行,并不会得到响应

所以我试图使用一个函数,从我的路线里面的mySql数据库返回一行:

.get('/users', function (req, res){ res.send(userInfo(req.user.id)); }) 

这是function:

 function userInfo(id){ colDB.query('SELECT username FROM users WHERE id = ?', [id], function(err, rows){ if (err) return {Error: defErrorMsg}; else return rows; })} 

我是相当新的节点,我不明白为什么不工作。 请帮忙 :(

我认为这是与节点的callback本质有关的。 您在返回值之前(处理asynchronous代码,如同步)。 尝试以下操作:

 function userInfo(id, callback){ colDB.query('SELECT username FROM users WHERE id = ?', [id], function(err, rows){ if (err) callback(err, null); else callback(null, rows); })} 

然后改变路线看起来像这样:

 .get('/users', function (req, res){ userInfo(req.user.id, function(err, user){ if(err) return res.send(err) res.send(user) }); })