簡體   English   中英

在mongodb中查找並保存for循環

[英]Find and save inside for loop 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"
    }
}

如果存在,則獲取詳細信息並通過添加獲取的詳細信息來保存詳細信息。
如果不只是在數據庫中添加聯系人,而是查詢無法按預期方式工作

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

不確定正在傳遞的異步調用

請幫助我糾正quire,contacts數組中的每個元素都必須查找並保存我的操作方式

無需為每個電話號碼觸發查詢

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM