我的请求包含一系列联系人,我必须确定联系人是否在数据库中:
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){
})
}
});
}
})
如果存在,则通过添加提取的详细信息来获取详细信息并保存详细信息 如果不只是在数据库中添加联系人,但查询未按预期工作
item
这里是代码
如果我发现它正确显示查找详细信息,当我尝试在for循环中保存第j个值时总是3
不确定正在通过的异步调用
请帮我纠正这个问题,联系人数组中的每个元素都必须找到并保存我的工作方式
答案 0 :(得分: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
})