2017-11-08 2 views
1

나는 여러 컬렉션을 가진 firebase DB를 사용하고 있으며, 포함 된 코드를 사용하여 e의 area_id와 일치하는 모든 어트랙션으로 구성된 배열을 성공적으로 반환 할 수 있습니다. 목표.ajax 쿼리는 인덱스로 객체 키 값을 변경합니다.

그러나 내 코드에서 배열의 객체 인덱스에 대해 attraction.id (area_id와 다른 키)가 변경되었습니다. 그래서 id 1은 0이되고, 2는 1이됩니다.

처음에는 Object.keys에서 발생한다고 생각 했으므로 콘솔 로그를 넣기 전에 변경 사항이 이미있었습니다. 그래서 나는 그것이 질의에서 일어나고 있다는 것에 거의 긍정적입니다. 어떤 도움이라도 대단히 감사합니다.

const getAttractionsByArea = (area_id) => { 
    let attractions = []; 
    return new Promise((resolve, reject) => { 
    $.ajax(`https://theme-park.firebaseio.com/attractions.json?orderBy="area_id"&equalTo=${area_id}`) 
     .then((results) => { 
     Object.keys(results).forEach((result) => { 
      results[result].id = result; 
      attractions.push(results[result]); 
     }); 
     resolve(attractions); 
     }).catch((err) => { 
     reject(err); 
     }); 
    }); 
}; 

답변

0

문제는 반복 될 때 현재 키 인덱스로, 각 개인 기록의, ID를 설정하는하는 것으로 보인다.

Object.keys는 해당 개체의 열거 가능한 속성과 동일한 문자열 배열을 반환한다는 것을 기억하십시오. 다시 인덱스 배열을 가져올 것입니다.

이 라인

결과 [결과] .ID = 결과가;

각 요소의 색인을 색인으로 설정하므로 db id의 요소가 54 인 경우 예를 들어 요소가 컬렉션에 두 번째 결과 인 경우 이제 1로 설정됩니다.

처음에는 그 라인이있는 이유가 확실치 않지만 그 라인을 주석 처리하고 얻은 것을 확인하십시오.

+0

이렇게했습니다. 고마워, javaBean007. –