Мангуст не возвращает сообщения, когда * .find () обернут в функцию - PullRequest
0 голосов
/ 11 мая 2019

я настроил простой экспресс-отдых API, и я хочу получать все сообщения, когда определенный маршрут запрашивается с моего сервера отдыха ("/ api / posts")

я попытался console.log(posts), и он показывает мне сообщения, но когда я пытаюсь перейти к маршруту http://localhost:5000/api/posts, он показывает мне пустую страницу, хотя console.logging сообщений показывает мне сообщения, почему это

function getAllPosts() {
  Post.find((err, posts) => {
    if (err) {
      console.error(err);
    }
    console.log(posts);
    console.log("all posts requested");
    return posts;
  });
}
router
  .route("/")
  .get((req, res) => {
    let posts = getAllPosts();
    res.send(posts);
  })

Я ожидал получить сообщения JSON, когда пойду на http://localhost:5000/api/posts

Ответы [ 2 ]

0 голосов
/ 12 мая 2019

когда вы возвращаете значение из функций getAllpost, маршруты получают неопределенное значение из-за асинхронности. Попробуйте отредактировать ваш код так:

function getAllPosts(req, res) {
   Post.find((err, posts) => {
    if (err) {
      console.error(err);
    }
    console.log(posts);
    console.log("all posts requested");
    res.send( { data: posts} );
  });
}
router
  .route("/").get((req, res) => {
     getAllPosts(req, res);

  });
0 голосов
/ 11 мая 2019

Это связано с асинхронной природой кода, который вы здесь имеете. res.send выполняется до того, как Post.find() сможет решить. Вы хотите res.send(posts) только после того, как запрос к базе данных закончил извлекать данные, если вы используете обратные вызовы, как в вашем примере, вы должны делать это внутри обратного вызова. Вы могли бы сделать что-то вроде этого.

router
  .route("/")
  .get((req, res) => {
    Post.find({}, (err, posts) => {
       if (err) {
         return res.status(500).send(err)
       }

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