2017-10-06 51 views
0

我有接觸的陣列我有細的聯繫人是否在數據庫中我的要求:查找和內保存循環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" 
    } 
} 

如果存在獲取詳細信息,並通過添加保存詳細信息提取的細節。
如果不是隻是添加到數據庫中接觸,但如預期

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){ 

        }) 
       } 

       }); 

     } 
}) 

在這裏的代碼查詢不工作

如果我發現這是正確顯示查找信息,當我嘗試拯救第j值在for循環總是3

不知道那是經過

異步調用

請幫我糾正疊紙,觸點陣列中的每個元素有做網絡第二,節省我怎麼做

回答

1

無需火查詢每個電話號碼

首先獲得所有的電話號碼在數組中。

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

然後使用下面的代碼:

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

爲了讓您的請求匹配的聯繫人的姓名,

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

豪是的,這工作,但我如何得到的值contactsDetails.PhNo = req.body.vishReqBody.Contacts [j] .PhNo contactsDetails.PhoneBookName = req.body.vishReqBody.Contacts [j] .Name它們是輸入請求數組的一部分 – DhanaLaxshmi

+0

結帳up日期的答案。最後一條語句將返回請求中的聯繫對象 –

+0

可以說你的代碼中的'profileDetail'是什麼,這個匹配的聯繫 – DhanaLaxshmi