2016-11-21 4 views
0

Hallo, ich bin neu zu Knoten js und Mongo db, so dass ich vor einem Problem, das oben geschrieben ist, will eine ID aus einem Array entsprechen und erhalten Sie die ganze Aufzeichnung der passenden ID, aber das funktioniert nicht Ich habe bereits für die Schleife versucht, aber das dauert zu viel Zeit, so suche ich nach einer Art von Abfrage, mit der ich ID übergeben und die übereinstimmenden Ergebnisse habe ich unten Funktion auch wo ich ID übergeben und das passende erhalten Ergebnis, aber ich weiß nicht, wie ich das nennen soll.Get Name von ID innerhalb der Schleife in Knoten js

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

Hier ist mein Code

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

Sammlung Struktur wie folgen 1) DISTID ist in den Schulen Sammlung kommenden mit allen Datensatz der passenden 2) Bezirk Array von Bezirk hat DISTID bekommen countyid und von dieser Grafschaft Identifikation muss Daten von der Grafschaftansammlung erhalten

+0

Wie ist Ihre Sammlungsstruktur? – hyades

+0

@hyades nur die Frage aktualisiert bitte –

Antwort

0

Anstatt Schleife innerhalb einer Schleife, würde ich vorschlagen, dass Sie in die $lookup operator der Ansammlung schauen Rahmen. Hier können Sie die Lookup-Server-Seite ausführen.

+0

gibt es eine Möglichkeit, wo wir mehrere Sammlungen Daten in einer einzigen Abfrage wie mysql tun können? –

+0

Können Sie erklären, was Sie meinen? Sie können beliebig viele Suchphasen hinzufügen. – HoefMeistert