Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 在mongodb中查找并保存内部for循环_Arrays_Mongodb_For Loop_Find_Save - Fatal编程技术网

Arrays 在mongodb中查找并保存内部for循环

Arrays 在mongodb中查找并保存内部for循环,arrays,mongodb,for-loop,find,save,Arrays,Mongodb,For Loop,Find,Save,我有一个拥有联系人数组的请求,我必须确定联系人是否在数据库中: { "vishReqHeader": { "ClientId": "0", "AppId": "101", "ApiCode": "1007", "ReqNo": "123456789" }, "vishReqBody": { "RegPhNo": "9880889660", "Cnt": "3",

我有一个拥有联系人数组的请求,我必须确定联系人是否在数据库中:

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

                    })
                }

                });

        }
})
router.route(“/uploadContacts”)
.post(功能(请求、恢复){
var j;
对于(j=0;j
这里是代码

如果我确实发现它正确地显示了find细节,那么当我尝试在for循环中保存jth值时,它总是3

不确定正在通过的异步调用


请帮我纠正这个问题,联系人数组中的每个元素都必须执行查找和保存操作 无需对每个电话号码进行查询

首先获取数组中的所有电话号码

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

hoo yes这是可行的,但是我如何获取contactsDetails.PhNo=req.body.vishReqBody.Contacts[j].PhNo contactsDetails.PhoneBookName=req.body.vishReqBody.Contacts[j].Name的值,它们是输入请求数组的一部分,请检查更新的答案。最后一条语句将从请求返回contact对象。您可以说出此匹配的Contacts是什么吗。数据库匹配并返回的一个。更新了我的代码