вернуть несколько запросов из бэкэнда - PullRequest
0 голосов
/ 28 августа 2018

Прямо вперед: у меня есть бэкэнд с несколькими маршрутами.

Можно ли вернуть несколько запросов с одного маршрута, например ::10000 *

router.get("/test/:id", (req, res) => {
  example.find({test: req.params.id})
    .then(data => res.json(data.map(moreData => moreData.serialize()))

  differentExample.find({something: req.params.id})
    .then(data => res.json(data.map(moreData => moreData.serialize()))
})

И затем есть оба поиска / результаты в интерфейсе:

.then(res => {
    if (!res.ok) {
        return Promise.reject(res.statusText);
    }
    return res.json();
})
.then(data => console.log(data))

Я обнаружил, что если я использую Promise.all(), я использую результат первого запроса для параметров запроса второго. Выше только мой мыслительный процесс. Это не работает так, и мне не хватает того, что делает это возможным (если это возможно)

1 Ответ

0 голосов
/ 28 августа 2018

Вы не можете отправить несколько ответов, используя HTTP. HTTP-запросы к ответам - 1: 1, поэтому при отправке запроса ВСЕГДА ожидайте только одного ответа. Что-нибудь еще, и это будет быстро запутаться. Итак, как отправить несколько наборов данных?

Вы могли бы сделать что-то вроде этого:

router.get("/test/:id", (req, res) => {
  let result = {}
  example.find({test: req.params.id})
    .then(data => {
        result['partOne'] = data.map(moreData => moreData.serialize())
        return differentExample.find({something: req.params.id})
    }).then(data => {
        result['partTwo'] = data.map(moreData => moreData.serialize())
        res.json(result)
    })
}

Примечание: я не проверял ни один из этого кода. Но по сути, выполните оба запроса, и как только вы получите результат обоих запросов, вы можете вернуть результат. Если запросы не зависят друг от друга, вы можете использовать что-то вроде этого, используя Promise.all, как вы упомянули:

Promise.all(
    example.find({test: req.params.id}, 
    differentExample.find({something: req.params.id})
).then(result => {
    res.json(result);
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...