路由返回等待功能完成

布莱克摩根

在以下代码中,路由在填充数组之前返回,因此数组返回空。我知道我在 promise 和/或 async 和 await 上做错了,但我不知道它是什么。

router.get('/:deckId', auth.required, (req, res) => {
  Deck.findById(req.params.deckId).then(deck => {
    let cardArray = []
    deck.cards.forEach(card => {
      const url = `https://api.scryfall.com/cards/${card.id}`
      getScryFallCard(url).then(a => cardArray.push(a))
    })
    res.json({
      name: deck.name,
      id: deck._id,
      cards: cardArray
    })
  })
})

我尝试使所有函数异步并将 await 放在子函数旁边。我尝试创建一个承诺,将 await 放在该承诺旁边,然后返回响应。我试过在 mongoose 函数上使用回调而不是 Promise。我已经尝试了 promise、async、await 和回调的其他组合,但都没有成功。填充数组后返回响应的正确方法是什么?

这是我得到的回应。卡片密钥应填充一系列卡片。

{
    "name": "Dovin",
    "id": "5ca50448232aa920636dd571",
    "cards": []
}
用户6435535
router.get('/:deckId', auth.required, (req, res) => {
  Deck.findById(req.params.deckId).then(async deck => {
    let cardArray = []
    for (let card of deck.cards) {
      const url = `https://api.scryfall.com/cards/${card.id}`
      let a = await getScryFallCard(url)
      cardArray.push(a)
    }
    res.json({
      name: deck.name,
      id: deck._id,
      cards: cardArray
    })
  })
})

您需要res.json在执行完循环中的所有代码后调用await确保在我们完成异步工作之前不执行下一行。因此,res.json在循环内完成所有调用后发送响应()。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从功能返回之前,等待AJAX完成?

来自分类Dev

在返回结果之前,nodejs不等待异步功能完成

来自分类Dev

使Jquery等待功能完成

来自分类Dev

等待服务功能完成

来自分类Dev

使Jquery等待功能完成

来自分类Dev

等待异步功能完成

来自分类Dev

如何等待功能完成?

来自分类Dev

如何等待功能完成?

来自分类Dev

角度等待不等待功能完成

来自分类Dev

等待异步功能,然后返回

来自分类Dev

返回不等待异步功能

来自分类Dev

不要等待异步功能完成

来自分类Dev

等待功能完成以在Xamarin Forms上加载

来自分类Dev

等待地图功能完成打字稿

来自分类Dev

React Native不等待功能完成

来自分类Dev

Angular等待服务功能Ajax完成

来自分类Dev

Node.js强制等待功能完成

来自分类Dev

等待上一个功能完成

来自分类Dev

NodeJS等待异步功能完成foreach

来自分类Dev

快速等待,直到dataTaskWithRequest完成调用返回

来自分类Dev

等待任务完成后不返回

来自分类Dev

等待setState完成,然后返回数据

来自分类Dev

等待for循环完成,然后返回值

来自分类Dev

iOS:等待API完成块并返回结果

来自分类Dev

在返回之前等待 NodeJS 中的事件完成

来自分类Dev

在等待任务完成之前返回的函数

来自分类Dev

等待Ajax功能完成,然后再开始新的功能

来自分类Dev

等待Ajax功能完成,然后再开始新的功能

来自分类Dev

Node.js中的功能编程-等待功能完成