mongodb - 如何将多个 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});
});
解决方案
使用您的代码执行以下操作。这应该可以解决您的问题(使用最新的语法)。“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});
})