0

我正在运行 Parse-Server v2.2.12 并试图运行一个提取巨大数据集(约 13k 记录)的作业,对其进行处理,然后将每条记录保存到我的 Parse db 中的一个表中。我的服务器似乎无法接受所有保存请求。我收到一条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}"
}
4

1 回答 1

1

我通过使用解决了这个问题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});
});

现在一切似乎都运行良好。

于 2017-03-07T17:53:08.543 回答