首页 > 解决方案 > 如何将多个 MongoDB 集合的内容发送到使用 express 进行渲染的路由?

问题描述

我有两个 mongoDB 集合(玩家和对手)。我想将它们的内容发送到同一条路线,以便我可以在不同的上下文中使用这些值。

我正在使用以下代码,但出现错误allPlayers is not defined。我怀疑更大的问题是我无法以我的方式发送两个数据集来create使用res.render

通常我只会else {res.render (create,{allPlayers:players})}在错误处理之后使用 : 但如果我还想发送第二个数据集显然不能这样做。

我对 express/mongo 等很陌生,所以可能会犯一个愚蠢的错误,但我们将不胜感激。

app.get("/create", function(req,res){
  Player.find({}, function(err, allPlayers){
    if (err){
        console.log("There is an error")
    }
  });
  Opponent.find({}, function(err, allOpponents){
   if (err){
    console.log("There is an error")
   } 
  });
  res.render("create", {players: allPlayers, opponents: allOpponents});
});

标签: mongodbexpress

解决方案


使用您的代码执行以下操作。这应该可以解决您的问题(使用最新的语法)。“allPlayers”未定义,因为您在回调范围之外引用它。

app.get("/create", async (req,res) => {
   const players = await Player.find({}, function(err, allPlayers){
       if (err){
           console.log("There is an error")
       }
   });
   const opponents = await Opponent.find({}, function(err, allOpponents){
      if (err){
          console.log("There is an error")
      } 
   });
   res.render("create", {players, opponents});
})

推荐阅读