【问题标题】:How to query two collection in mongoose on nodeJs?如何在nodeJs上查询猫鼬中的两个集合?
【发布时间】:2013-05-16 19:11:42
【问题描述】:

嗨,我是 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 中查询集合中的集合。提前致谢。

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案1】:

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

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

    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);
          })
        }
    
      }
    })
    

    【讨论】:

      猜你喜欢
      • 2017-04-18
      • 2020-08-14
      • 2021-11-25
      • 2021-08-04
      • 1970-01-01
      • 2022-11-10
      • 2022-12-05
      • 2017-04-03
      相关资源
      最近更新 更多