gpt4 book ai didi

node.js - 如何在nodeJs上查询mongoose中的两个集合?

转载 作者:可可西里 更新时间:2023-11-01 09:52:45 25 4
gpt4 key购买 nike

嗨,我是 nodeJs 的新手,我必须从查询结果中查询一个表,我必须查询另一个表。我尝试了如下代码,但它只返回 null。

 action(function getpositions(req){
var namearray = [];
NHLPlayerStatsDaily.find ({"created_at": {$gt: new Date(y+"-"+m+"-"+d)}}, function(err,position){
if(!err)
{
for (i=0;i< position.length; i++)
{
var obj = JSON.stringify(position[i]);
var pos = JSON.parse(obj);

var p = pos["player_stats_daily"]["content"]["team_sport_content"]["league_content"]["season_content"]["team_content"]["team"]["id"]
NHLTeam.find({"sdi_team_id": p}, "first_name nick_name short_name sport_id", function(err, team){
if (!err){
var obj = JSON.stringify(team);
var pos = JSON.parse(obj);
namearray.push(team)
}
})
}
return send(namearray);
}
})
})

如果我只是按“p”,它会显示结果,当我在单独的函数中查询“NHLTeam”时,它也会显示结果。使用 in collection 查询集合时,它返回 null。如何在 Mongoose 中查询集合中的集合。提前致谢。

最佳答案

这不是查询问题,是回调问题。 send(namearray) 在循环中的任何 NHLTeam 查询完成之前被调用(记住这些查询的结果被异步传递给回调)。

你可以做的是这个(基本上是跟踪所有回调何时完成):

NHLPlayerStatsDaily.find ({"created_at": {$gt: new Date(y+"-"+m+"-"+d)}}, function(err,position){
if(!err)
{
var total = position.length;

for (i=0;i< position.length; i++)
{
var obj = JSON.stringify(position[i]);
var pos = JSON.parse(obj);

var p = pos["player_stats_daily"]["content"]["team_sport_content"]["league_content"]["season_content"]["team_content"]["team"]["id"]
NHLTeam.find({"sdi_team_id": p}, "first_name nick_name short_name sport_id", function(err, team){
total--;
if (!err){
var obj = JSON.stringify(team);
var pos = JSON.parse(obj);
namearray.push(team);
}
if(total == 0)
send(namearray);
})
}

}
})

关于node.js - 如何在nodeJs上查询mongoose中的两个集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16584921/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com