Javascript TypeError:query.findAll不是函数节点

Javascript TypeError:query.findAll不是函数节点,javascript,node.js,async-await,mysql-connector,Javascript,Node.js,Async Await,Mysql Connector,我正在尝试将sql查询参数传递给data access js文件。我已经在当前文件中导入了函数,但仍然得到以下错误 当前文件 const tcount = async (value) => { const sql = 'trainingcount'; const result = await query.findAll(sql); return result; } 数据访问文件 const query=(结果)=>{ findAll:async(sql,result)=>{

我正在尝试将sql查询参数传递给data access js文件。我已经在当前文件中导入了函数,但仍然得到以下错误

当前文件

const tcount = async (value) => {
  const sql = 'trainingcount';
  const result = await query.findAll(sql);
  return result;
}
数据访问文件

const query=(结果)=>{
findAll:async(sql,result)=>{
connection.query(`SELECT*fromtrainingcount`,(err,rows)=>{
如果(错误){
返回结果(null,err);
}否则{
返回结果(行);
}
});
};
};
导出{query};
(节点:11132)未处理的PromisejectionWarning:TypeError: query.findAll不是一个函数


编辑:检查注释上的@rid solutions,了解调用适当函数的具体问题。我的答案解决了OP代码中的另一个问题


在回调函数中调用
return
,因此返回的是该函数,而不是
findAll
。你需要回报一个承诺:

const query=(结果)=>{
findAll:(sql,result)=>{
返回新承诺((解决、拒绝)=>{
connection.query(`SELECT*fromtrainingcount`,(err,rows)=>{
如果(错误){
拒绝(错误);
}否则{
解析(行);
}
});
});
};
};
导出{query};

我对
query
应该是什么有点困惑。它看起来像是一个带有单个参数的函数,但您正在尝试访问它的属性。请向我们展示如何在“当前文件”中导入
query
对象。我已使用“../helpers/dataManager.js”中的import{query}完成导入;您如何使用
查询
?你在别的地方用它吗?是你写的,还是在什么地方找到的?如果你在某个地方找到它,也许他们有如何使用它的例子?因为看起来你没有按预期的方式使用它。如果是你写的,那么你打算如何使用它?为什么要编写
query=(results)=>{…}
而不是
query={findAll:…}
?什么是
结果
?另外,
query=(results)=>…
query=function(results){…}
相同,因此
query
是一个函数,它不像您期望的那样是一个具有
findlAll
属性的对象。感谢您解释如何返回@gbalduzzi。学习了一种编写代码的好方法