从节点js中的循环内部获取id

时间:2016-11-21 06:51:05

标签: node.js mongodb

你好我所有的新节点js和mongo db所以我面临一个问题,上面写的想要匹配数组中的id并得到所有匹配id的记录,但那不起作用我已经尝试过循环,但这需要花费太多时间,所以我正在寻找某种查询,通过它我传递id并得到匹配的结果我有下面的功能也在哪里我可以传递id并得到匹配的结果,但我不知道怎么称呼它。

exports.getDistrictFromId = function(req, res, next) {
  var distId = req.params.id;
  districtslib.getDistricts({_id: utils.toObjectId(distId)}, function(err, district) {
    if (err) {
      return next(err);
    }
    req.store.district = district;
    next();
  });
};

这是我的代码

    exports.getCompleteTeachersList = function(req, res, next) {

      var query = req.store.get('query');
      var teacherQuery = {enabled: true};
      var searchQuery = '';
      if (!_.isUndefined(query)) {

          //      schoolQuery = {'name':new RegExp(query.replace(/([.?*+^$[\]\\(){}|-])/g, "\\$1"),'i')};
          //{ $text: { $search: "amit hinduja"} }
          //teacherQuery = {enabled: true,$or:[{firstName:new RegExp(query.replace(/([.?*+^$[\]\\(){}|-])/g, "\\$1"),'i')},{lastName:new RegExp(query.replace(/([.?*+^$[\]\\(){}|-])/g, "\\$1"),'i')}]};
          if(query.trim() != '') {
            teacherQuery = {enabled: true,$text: { $search: query} };
            searchQuery = query;
          }
      }

      teacherslib.getTeachers(teacherQuery, function(err, teachers) {
        if (err) {
          return next(err);
        }
        var schools  = req.store.get('schools');
        for(var i = 0; i < teachers.length; i++) {
        teachers[i].schoolName    = "";
            for(var j = 0; j < schools.length; j++) {
                if (teachers[i].schoolId.toString() === schools[j]._id.toString()) {
                    teachers[i].schoolName  = schools[j].name; 
                    teachers[i].distId      = "";
                    var districts           = req.store.get('districts');
                    console.log(schools[j].distId);
// i want to get the array of matching district id `schools[j].distId` from the district array from `var districts = req.store.get('districts');` this line
                  break;
                }
            }
        }
        req.store.set('searchQuery', searchQuery);
        req.store.set('teachers', teachers);
        //req.store.set('districts', districts);

        next();
      });
    };

集合结构是这样的 1)在学校集合中出现了很糟糕的情况 使用distid从区获取所有匹配的记录 2)分区数组有countyid,从那个县id必须从县集合中获取数据

1 个答案:

答案 0 :(得分:0)

我建议您查看聚合框架的$lookup operator,而不是在循环内循环。在这里,您可以执行查找服务器端。