Async / Await возвращает неопределенное значение - PullRequest
0 голосов
/ 07 октября 2018

Я пытаюсь вернуть счет из моей базы данных.Методы count (). Exec, возвращающие Promise, я пытаюсь разрешить его, чтобы вернуть значение пользователю.

Но он возвращает undefined

Мне кажется, у меня естьхорошо использовал методологию async / await, так что не так?Я не могу понять.

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 голосов
/ 07 октября 2018

Ваша оценка () возвращает неопределенное значение вместо возврата обещания, потому что вы возвращаете новую строку из функции обратного вызова.

замените countQuery.then(...) на return countQuery.then(...).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...