.forEach()
을 사용하여 여러 사용자 세부 정보를 내 Mongodb 데이터베이스에 삽입하고 싶습니다. 레코드를 삽입하기 전에 사용자 레코드가 존재하는지 확인하고 싶습니다. 사용자가 존재하지 않으면 새로운 사용자 레코드를 삽입하십시오. 그렇지 않으면 기존 사용자 레코드를 업데이트하십시오..forEach()를 사용하여 여러 모음을 삽입하는 방법 및 존재 여부 확인
다음은 배열에서, 자사의 확인에만 첫 번째 개체를이 코드를 실행하고 내 DB에 삽입 할 때
var dataArray=[
{"id":"1","name":"abc","email":"[email protected]"},
{"id":"2","name":"xyz","email":"[email protected]"},
{"id":"1","name":"abc","email":"[email protected]"},
];
dataArray.forEach(function(dataVar){
//check record exist or not
User.findOne({id:dataVar.id},function(err,user){
if(!user){// Insert If user not exist
var userSchema=new User({
id:dataVar.id,
name:dataVar.name,
email:dataVar.email
});
userSchema.save(function(err,result){
console.log('New Record Inserted');
})
}else{ // Update records if user exist
User.update({id:dateVar.id},{email:dataVar.email},function(err,result){
console.log('Record Updated');;
});
}
})
});
입니다. 그러나 다음 번에 세 번째 객체가 실행될 때 새 레코드와 같은 검사 및 삽입이 수행되지 않습니다.
나는 무슨 일이 일어나지 않을거야.
해결 방법을 알려주십시오.
감사합니다.
당신은'forEach'를 사용하여 반복 배열에 동기화 작업과 비동기 혼합된다. 비동기 적으로 반복해야합니다. [async] (https://github.com/caolan/async) 라이브러리를 확인하십시오.이 라이브러리는 제어 흐름 (비동기 작업)을 위해 만들어졌으며 배열 요소에 대한 많은 메소드가 있습니다. 여기에는 async.forEach (arr, iterator, callback) 메소드가 필요할 것이다. – chridam
이제'async'로 작업합니다. .. 고마워요 –