2017-10-06 3 views
0

Ich habe meine Anfrage, die eine Anordnung von Kontakten speichern ich muss fein, ob der Kontakt in der Datenbank:Suchen und nach innen für Schleife in mongodb

{ 
    "vishReqHeader": { 
     "ClientId": "0", 
     "AppId": "101", 
     "ApiCode": "1007", 
     "ReqNo": "123456789" 
    }, 
    "vishReqBody": { 
     "RegPhNo": "9880889660", 
     "Cnt": "3", 
     "Contacts": [{ 
       "PhNo": "9880889660", 
       "Name": "Alex" 
      }, 
      { 
       "PhNo": "9538607847", 
       "Name": "Cindy" 
      }, 
      { 
       "PhNo": "9886949651", 
       "Name": "Rob" 
      } 
     ] 

    }, 
    "vishReqTrailer": { 
     "DeviceData": "lat=12.9677992|lng=77.596204|IMEI=1234567890|appVer=3.0.1|OS=ANDROID|SoftVer=6.0.1", 
     "Authentication": "securitytoken" 
    } 
} 

Wenn vorhanden, um die Details holen und die Details speichern durch Hinzufügen die abgerufenen Details.
Wenn nicht nur den Kontakt in der Datenbank hinzufügen, aber die Abfrage funktioniert nicht als

erwartet
router.route('/uploadContacts') 
    .post(function(req,res){ 
     var j; 
     for(j = 0; j < req.body.vishReqBody.Contacts.length; j++) { 
      ProfileDetails.findOne({ 'PhNo' : req.body.vishReqBody.Contacts[j].PhNo} , 
       function(err, profileDetail) { 
        console.log("*************reqreq********************") 

        console.log(j) 
       if(profileDetail && profileDetail.PhNo){ 

        console.log(req.body.vishReqBody.Contacts) 

        console.log("*************reqreq********************") 
        var contactsDetails = new contacts(); 
        contactsDetails.PhNo=req.body.vishReqBody.Contacts[j].PhNo 
        contactsDetails.RegStatus=profileDetail.Reg_Status 
        contactsDetails.profileId=profileDetail.Profile_Id 
        contactsDetails.PhoneBookName=req.body.vishReqBody.Contacts[j].Name 
        contactsDetails.updatedByProfileId=req.body.vishReqHeader.AppId 

        contactsDetails.save(function(err,result){ 

        }) 
       } 

       }); 

     } 
}) 

hier im Code

Wenn ich es finde richtig die Entdeckung Details angezeigt wird, wenn ich versuche, den j-te Wert in dem for-Schleife zu sparen ist immer 3

des Asynchron-Anrufs nicht sicher, dass durch

vorbei ist mir

bitte helfen, die quire zu korrigieren, hat jedes Element in dem Kontakt Array fi zu tun nd und speichern, wie ich es tun

Antwort

1

keine Notwendigkeit, eine Abfrage für jede Telefonnummer

Zuerst alle Telefonnummern bekommen in einem Array zu feuern.

var phoneNumberArray =req.vishReqBody.Contacts.map(function(contact){ 
    return contact.PhNo 
}) 

Sie dann den folgenden Code verwenden:

ProfileDetails.findOne({ 'PhNo' : {$in:phoneNumberArray}}) 

Um den Namen des angepassten Kontakt aus Ihrer Anfrage zu erhalten,

req.vishReqBody.Contacts.find(function(contact){ 
    return contact.PhNo == profileDetail.PhNo 
}) 
+0

hoo ja, das funktioniert, aber wie bekomme ich den Wert für contactsDetails.PhNo = req.body.vishReqBody.Contacts [j] .PhNo contactsDetails.PhoneBookName = req.body.vishReqBody.Contacts [j] .Name, die Teil der ankommenden Anfrage Array sind – DhanaLaxshmi

+0

check the up datierte Antwort. die letzte Anweisung wird das Kontaktobjekt von der Anfrage zurückgeben –

+0

können Sie bitte sagen, was ist das MatchedContact – DhanaLaxshmi

Verwandte Themen