Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用大数据集保存时解析服务器XMLHttpRequest失败_Javascript_Node.js_Jobs_Parse Server_Parse Javascript Sdk - Fatal编程技术网

Javascript 使用大数据集保存时解析服务器XMLHttpRequest失败

Javascript 使用大数据集保存时解析服务器XMLHttpRequest失败,javascript,node.js,jobs,parse-server,parse-javascript-sdk,Javascript,Node.js,Jobs,Parse Server,Parse Javascript Sdk,我正在运行Parse Server v2.2.12,并试图运行一个作业,该作业会提取一个巨大的数据集(~13k条记录),对其进行处理,然后将每条记录保存到我的Parse db中的一个表中。我的服务器似乎无法接受所有保存请求。我收到一个code 100错误消息:XMLHttpRequest失败:“无法连接到解析API”用于大约60%的保存请求 我的代码如下所示: makeHttpRequest('GET', endpoint).then( (httpResponse) => { c

我正在运行Parse Server v2.2.12,并试图运行一个作业,该作业会提取一个巨大的数据集(~13k条记录),对其进行处理,然后将每条记录保存到我的Parse db中的一个表中。我的服务器似乎无法接受所有保存请求。我收到一个
code 100
错误消息:
XMLHttpRequest失败:“无法连接到解析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);
});
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});
});
我尝试将阵列分成三个部分(~4.5k条记录),并使用
promise按顺序执行每组保存。然后
但我仍然得到:

{
  "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 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);
});
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});
});
现在一切似乎都很好