异步/等待返回未定义

时间:2018-10-07 13:15:26

标签: javascript node.js async-await

我正在尝试从数据库中返回计数。 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)
  })
  })
});

我只是想知道我是否必须在函数调用中包装所有别有用心的过程。因此,如果可能的话,可能会进行一些重构以避免某些地狱式的过程。无论如何,同时它很有效,谢谢。

1 个答案:

答案 0 :(得分:2)

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

countQuery.then(...)替换为return countQuery.then(...)