2017-03-06 85 views
0

我正在運行Parse-Server v2.2.12,並試圖運行一個抽取巨大數據集(~13k記錄)的作業,處理它,然後將每條記錄保存到表在我的Parse數據庫。看來我的服務器無法接受所有的保存請求。對於約60%的保存請求,我收到code 100錯誤消息:XMLHttpRequest failed: "Unable to connect to the Parse API"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}); 
}); 

現在一切似乎都工作正常。