пн goose найти и вернуть res.status. json - PullRequest
1 голос
/ 07 мая 2020

Я разрабатываю API, который показывает список досок объявлений.

И он также показывает одно из последних сообщений одновременно.

В контроллере, который я закодировал так

exports.boards_get_all = (req, res, next)=>{
    Board.find()
    .exec()
    .then(boards=>{

        res.status(200).json({
            count: boards.length,
            boards: boards.map(board=>{

                    return {
                        board: {
                            id:board._id,
                            name: board.name,
                            order: board.order
                        },
                        post : Post.findOne({boardId:board._id})
                        .exec()
                        .then(posts=>{
                           console.log(posts)
                           return posts;
                        }
                        )
                }
    })
   })
  })
}

Я использую findOne () и пытаюсь вернуть то, что было найдено Post

, но ответ не сработал. просто верните пустое значение.

результат:

{
    "count": 1,
    "boards": [
        {
            "board": {
                "id": "5eb23f1fed38dc5dfc2debfd",
                "name": "QnA board",
                "order": 1
            },
            "post": {}
        }
    ]
}

Думаю, я ошибся в использовании findOne () ...

Я хочу получить такой результат

    {
        "count": 1,
        "boards": [
            {
                "board": {
                    "id": "5eb23f1fed38dc5dfc2debfd",
                    "name": "QnA board",
                    "order": 1
                },
                "post": {
                      _id: 5eb364a27989ab6f414fcdb1,
                      userId: 5eb2aad669738d67b5497f3a,
                      boardId: 5eb23f1fed38dc5dfc2debfd,
                      type: 1,
                      title: 'this is a latest post in QnA board',
                      content: 'Sample content',
                      like: 0,
                      comment: 0,
                      view: 1,
                      date: 2020-05-07T01:30:10.957Z,
                      thumb: 'pic url',
                      __v: 0
                    }
            }
        ]
    }

1 Ответ

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

Сообщение {}, потому что res.status(200).json() выполняется и возвращается до того, как обратный вызов findOne вернет значение.

Чтобы исправить это, вам нужно получить почтовые документы из базы данных перед тем, как позвонить res.status(200).json().

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