2016-08-14 2 views
0

안녕하세요 저는 입력 배열의 각 값을 사용하여 db를 검색하고 찾지 못하면 별도의 항목을 만들려고합니다 .. 그렇지 않으면 건너 뜁니다. 예. 클라이언트에서Mongoose 배열 입력에서 각각 찾으십시오

입력

Inputquery = { 'make':'Audi', 'years':[0, 3 , 4]} 
 
var count = 0; 
 
for(var i=0; i<Inputquery.years.length; i++){ 
 
    vehicleSchema.find({ 
 
    'make':Inputquery.make, 
 
    'year':Inputquery.years[i] 
 
    }, function(err, responseData){ 
 
    if(responseData.length>0){ 
 
     count++; 
 
    }else{ 
 
     var newVehicle = new vehicleSchema(); 
 
     newVehicle.make = Inputquery.make; 
 
     newVehicle.year = Inputquery.years[i]; 
 
     newVehicle.save(function(err, responseData){ 
 
     if(err){ 
 
      throw; 
 
     } 
 
     if(responseData){ 
 
      count++; 
 
     } 
 
     }) 
 
    } 
 
    }) 
 
} 
 
//this executing before waiting for previous operation to finish 
 
if(count== Inputquery.years.length){ 
 
    //success 
 
}

내가이 힘이라고 생각이

답변

0

을 할 수있는 다른 방법이 위의 문제를 도와 그리고 난 알고 싶지도 하세요 더 나은 접근 방법 :

let make = 'Audi'; 
let years = [10, 11, 22]; 
vehicleSchema.find({ 
    make: make, 
    year: { $in: years } 
}, (data) => { 
    if(data.length !== years.length) { 
     // we need to figure out which years are missing and add them to the db 
     for (var i = data.length - 1; i >= 0; i--) { 
      var current = data[i]; 
      years.splice(years.indexOf(current.year), 1); 
     } 
     let missing = years; // these are the missing attributes, now we just loop through them and add new ones like usual 
    } else { 
     // all is well, there are no missing entries 
    } 
}); 

질문이 있으시면 알려주세요.

관련 문제