2017-03-06 81 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}); 
}); 

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