我正在使用node.js和express,但我被卡在 module.export
函数上。这是我的代码:
list.js
exports.getCategory = function () {
var sql = 'select * from categories';
db.query(sql,function(error,rows){
if(error){
console.log('some error occured %s',error);
return;
}else{
return rows;
}
});
}
我有一个全局SQL连接作为数据库。我现在不发布该连接。当我在我的app.js中使用list.js时,它会打印未定义的
app.js
const list = require('./lib/list')
console.log(list.getCategory)
我在这里不确定。我在这里做错了什么?
需求需要一个文件名(包括" .js"扩展名(,除非文件名是index.js-在这种情况下,只有dir名称才能做到。因此,您需要指定
const list = require('./lib/list.js')
假设List.js在LIB文件夹中,LIB文件夹与App.js
处于同一级别似乎还有一个问题。" db.query"呼叫是异步的。因此,到当时,Console.log已在app.js中完成,结果可能无法可用。因此,您必须考虑到这一点。如果" db.query"可以返回承诺(而不是回调( - 您可以返回诺言,并在" app.js"中登录"。然后"。
编辑:
由于它是list.getCategory而不是list.getCategory((,因此尚未进行异步调用 - 因此异步不是问题。感谢@oniondomes指出这一点。
在几乎没有努力的情况下,我终于解决了,回调错误我需要回调函数,这是校正的代码 List.js
exports.getCategory = function (callback) {
var sql = 'select * from categories';
db.query(sql,function(error,rows){
if(error){
console.log('some error occured %s',error);
return;
}else{
callback(rows);
}
});
}
app.js
const list = require('./lib/list')
list.getCategory(function(result){
console.log(result);
})