Javascript 如何修复返回“未定义”的异步函数?

Javascript 如何修复返回“未定义”的异步函数?,javascript,node.js,async-await,Javascript,Node.js,Async Await,我正试图从数据库中返回计数。count().exec方法返回一个承诺。我正在尝试解析它,以便将值返回给用户。但它返回未定义的 在我看来,我已经很好地使用了异步/等待模式,那么有什么不对呢?我想不出来 这里是我的片段: app.get(“/blog/page/:pageTargeted”,(请求、回复)=>{ var countQuery=Posts.estimatedDocumentCount().exec(); //学院中文档的估计计数 函数估计(){ 然后(count=>{ countStr

我正试图从数据库中返回计数。
count().exec
方法返回一个承诺。我正在尝试解析它,以便将值返回给用户。但它返回未定义的

在我看来,我已经很好地使用了异步/等待模式,那么有什么不对呢?我想不出来

这里是我的片段:

app.get(“/blog/page/:pageTargeted”,(请求、回复)=>{
var countQuery=Posts.estimatedDocumentCount().exec();
//学院中文档的估计计数
函数估计(){
然后(count=>{
countStringified=count.toString();
返回字符串化;
})
}//console.log=>成功返回一个值
//设置数据
异步函数setData(){
让countstrinified=等待估计();
返回字符串化;
}
//发送数据
函数sendData(){
setData().then(result=>console.log(“result in sendData:”,result));
}//未定义
sendData();
});
***编辑***:现在可以了,这是我的新片段:

setData()。然后(结果=>{//调用异步/等待函数链
log(“Post.find中的计数:”,结果);
log(“Post.find中的pageTargeted:,pageTargeted”);
if(err)返回控制台。error(err);
资源状态(200)。发送(结果);
});
我只是想知道我是否必须将所有不可告人的进程包装在函数调用中。所以,如果可能的话,可能会进行一些重构,以避免一些地狱式的过程。无论如何,同时它也可以工作,非常好,谢谢。

您的estimation()函数返回undefined,而不是返回承诺,这是因为您从回调函数返回了新字符串


替换
countQuery。然后(…)
return countQuery。然后(…)

函数必须返回一个承诺。
estimation()
函数返回countstringized,同时感谢hintNo没有返回。传递给
的回调函数返回
countstringized
,但
estimation()
本身返回
未定义的
。您只需在
之前粘贴
return
。然后()
call.waw,几个月后我开始编码,这是我第一次发现“return scope”问题。嗯,很有趣