Как я могу убедиться, что обещание выполнено перед вызовом функции? - PullRequest
0 голосов
/ 03 мая 2020

Я пытаюсь убедиться, что я правильно подключился к MongoDB перед отправкой этого клиента в модуль, который я создал. Моя цель для этого сервера состояла в том, чтобы он получил метод GET, запустил функцию issue.getIssues, которая затем запрашивает все документы на моем сервере MongoDB, затем получает эти документы, а затем отправляет их обратно в исходную функцию, которая затем дает значение на мой шаблон, который должен затем отображать все документы. Моя ошибка:

UnhandledPromiseRejectionWarning: TypeError: client.db is not a function
    at Object.getIssues (...\issue_backend\node_modules\issue-manager\issue.js:6:35)
    at ...\issue_backend\routes\issues.js:14:30
    at Layer.handle [as handle_request] (...\issue_backend\node_modules\express\lib\router\layer.js:95:5)
    at next (...\issue_backend\node_modules\express\lib\router\route.js:137:13)
    at Route.dispatch (...\issue_backend\node_modules\express\lib\router\route.js:112:3)
    at Layer.handle [as handle_request] (...\issue_backend\node_modules\express\lib\router\layer.js:95:5)
    at ...\issue_backend\node_modules\express\lib\router\index.js:281:22
    at Function.process_params (...\issue_backend\node_modules\express\lib\router\index.js:335:12)
    at next (...\issue_backend\node_modules\express\lib\router\index.js:275:10)
    at Function.handle (...\issue_backend\node_modules\express\lib\router\index.js:174:3)

Я пытался принудительно выполнить обещание, используя await и promise.resolve (), но я просто не могу понять это. Возможно, я просто не понимаю асинхронное программирование, но мне нужна помощь с этим. Мой код можно найти на этом Repl.it: https://repl.it/repls/LazyOldCommercialsoftware Мне не удалось заставить repl распознавать локальные файлы, а также очевидную MongoDB, которая больше не работает, но вы можете просмотреть мой код.

1 Ответ

0 голосов
/ 03 мая 2020

Вы передаете Promise параметру getIssues client, а не клиенту MongoDB, поэтому ошибка говорит, что client.db не является функцией. Вы можете удалить Promise.resolve в маршрутах / проблемах. js или использовать (await client).db в диспетчере проблем / проблем. js.

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