You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js中Controller调用Service层异步函数无返回值问题

问题根因

你没有执行Service层导入的fetchReviews异步函数,只是在await这个函数本身,所以函数内部逻辑完全没有触发。
从你打印的日志"Inside controller": [AsyncFunction: fetchReviews]就能直接验证:data拿到的是函数类型的引用,不是函数执行后的返回结果。
JS里的async关键词修饰的函数,只有加括号调用之后,才会返回内部逻辑对应的Promise对象;如果只写函数名不加括号,拿到的只是函数的定义本身,不会运行内部的任何代码,自然Service里的console.log不会执行,也拿不到数据库查询结果。

修复方案

修改Controller层的调用代码,给fetchReviews加上调用括号即可,修正后的代码如下:

const {fetchReviews}  = require('../services/getReviews.service');

const getReviews = async (req,res) => {
  // 注意fetchReviews后添加了(),表示执行该异步函数
  const data = await fetchReviews();
  console.log("Inside controller:",data);
  return res.status(200).send({"reviews": data });
}
补充说明

await关键字如果接收到的不是Promise类型的值,会直接把这个值作为等待结果返回,不会做额外处理。你之前的写法里await接的是函数对象,属于非Promise值,所以直接把函数本身赋值给了data,全程没有触发数据库查询逻辑。

内容的提问来源于stack exchange,提问作者Digvijay Singh Thakur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 09:06:20