Parse-Server XMLHttpRequest 保存大型数据集失败
Parse-Server XMLHttpRequest failed on save with large dataset
我正在 运行ning Parse-Server v2.2.12 并正在尝试 运行 一项工作,该工作会提取一个巨大的数据集(~13k 条记录),对其进行处理,然后将每条记录保存到我的 Parse 数据库中的 table。看来我的服务器无法接受所有保存请求。我收到 code 100
错误消息:XMLHttpRequest failed: "Unable to connect to the Parse API"
大约 60% 的保存请求。
我的代码看起来像这样:
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}"
}
我使用 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});
});
现在似乎一切正常。
我正在 运行ning Parse-Server v2.2.12 并正在尝试 运行 一项工作,该工作会提取一个巨大的数据集(~13k 条记录),对其进行处理,然后将每条记录保存到我的 Parse 数据库中的 table。看来我的服务器无法接受所有保存请求。我收到 code 100
错误消息:XMLHttpRequest failed: "Unable to connect to the Parse API"
大约 60% 的保存请求。
我的代码看起来像这样:
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}"
}
我使用 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});
});
现在似乎一切正常。