2017-03-06 12 views
0

Parse-Server v2.2.12를 실행 중이고 거대한 데이터 세트 (~ 13k 레코드)를 가져 와서 처리 한 다음 각 레코드를 내 Parse db에있는 테이블. 내 서버가 모든 저장 요청을 수락 할 수없는 것으로 보입니다. code 100 메시지와 함께 오류 : XMLHttpRequest failed: "Unable to connect to the Parse API"이 저장 요청의 약 60 %를 차지합니다.대용량 데이터 세트를 사용하여 Parse-Server XMLHttpRequest를 저장하지 못했습니다.

내 코드는 다음과 같이 보입니다 :

makeHttpRequest('GET', endpoint).then((httpResponse) => { 

    const dataArray = httpResponse.body.array; 
    const Class = Parse.Object.extend('className'); 

    const savePromises = _.map(dataArray, (jsonObject) => { 

     const object = new Class(); 
     object.set(IdKey, "" + jsonObject.id); 
     object.set(nameKey, jsonObject.name); 
     return object.save(null, {useMasterKey: true}); 
    }); 

    return Parse.Promise.when(savePromises); 
}); 

나는 분 (~ 4.5k 기록)들로 배열을 깨는 시도하고 순차적으로 promise.then를 사용하여 저장합니다 각각의 세트를 수행을하지만, 난 여전히 받고 있어요 :

{ 
    "code": 100, 
    "message": "XMLHttpRequest failed: \"Unable to connect to the Parse API\"" 
} 

업데이트는 : 우리의 생산 서버에이 작업을 마이그레이션 한 후 나는 약간 다른 오류 메시지와이 완료 절약의 더 많은을 얻을, HTTPS 기반이다. 우리 프로덕션 서버의 추가 용량으로 인해 더 많은 저장이 완료된 것 같습니다. 새 오류는 다음과 같이 보입니다.

{ 
    "code": 100, 
    "message": "XMLHttpRequest failed: {\"UNSENT\":0,\"OPENED\":1,\"HEADERS_RECEIVED\":2,\"LOADING\":3,\"DONE\":4,\"readyState\":4,\"responseText\":\"\",\"responseXML\":\"\",\"status\":504,\"statusText\":null,\"withCredentials\":false}" 
} 

답변

0

나는 이것을 Parse.Object.saveAll(objects)을 사용하여 해결했습니다. 이제는 13k 레코드를 모두 저장하는 데 아무런 문제가 없습니다. 코드는 다음과 같습니다.

makeHttpRequest('GET', endpoint).then((httpResponse) => { 

    const dataArray = httpResponse.body.array; 
    const Class = Parse.Object.extend('className'); 

    const allObjects = _.map(dataArray, (jsonObject) => { 

     const object = new Class(); 
     object.set(IdKey, "" + jsonObject.id); 
     object.set(nameKey, jsonObject.name); 
     return object; 
    }); 

    return Parse.Object.saveAll(allObjects, {useMasterKey: true}); 
}); 

모든 것이 제대로 작동하는 것처럼 보입니다.