我正在尝试从数据库中返回计数。 count()。exec方法返回一个Promise,我试图解决它以便将值返回给用户。
但是它返回未定义
在我看来,我已经很好地使用了异步/等待方法,那么怎么了?我不知道。
Here my snippet :
app.get("/blog/page/:pageTargeted", (req, res) => {
var countQuery = Posts.estimatedDocumentCount().exec();
// estimate count of document in collecion
function estimation() {
countQuery.then(count => {
countStringified = count.toString() return countStringified
})
} // console.log => successfully returns a value
// set Data
async function setData() {
let countStringified = await estimation()
return countStringified
}
// send Data
function sendData() {
setData().then(result => console.log("result in sendData: ", result))
} // undefined
sendData();
});
*编辑* :现在可以使用了,这里是我的摘录:
setData().then(result => { // call an async/await functions chain
// var count = setData().then(countResult => countResult).then(data => data );
console.log("count in Post.find: ", result)
console.log("pageTargeted in Post.find: ", pageTargeted)
if (err) return console.error(err);
res.status(200).send(result)
})
})
});
我只是想知道我是否必须在函数调用中包装所有别有用心的过程。因此,如果可能的话,可能会进行一些重构以避免某些地狱式的过程。无论如何,同时它很有效,谢谢。
答案 0 :(得分:2)
您的estimation()函数返回的是undefined,而不是返回promise,这是因为您从回调函数返回了新字符串。
将countQuery.then(...)
替换为return countQuery.then(...)
。