所以我想在Parse中获取大量的数据,我发现一个很好的解决方案是做一个递归的函数:当数据成功发现时,启动另一个请求.我这样做的方式很简单:
var containedLimit = 1000,// Also tried with 500,300,and 100 parseUsersWaiting = { // A lot of Users },parseUsers = {},// Recipt for Users getPlayers = function (containedIn) { var count = 0; if (containedIn == undefined) { containedIn = []; for (var i in parseUsersWaiting) { count++; if (count > containedLimit) { break; } containedIn.push(parseUsersWaiting[i].id); delete parseUsersWaiting[i]; } } var UserObject = Parse.Object.extend('User'),UserQuery = new Parse.Query(UserObject); UserQuery.limit(containedLimit); UserQuery.containedIn('objectId',containedIn); UserQuery.find({ success: function (results) { if (results) { for (var i in results) { if (parseUsers[results[i].id] == undefined) { parseUsers[results[i].id] = results[i]; } // Other stuff if (results.length < containedLimit) { // End of process } else { getPlayers(); } } } else { // Looks like an end of process too } },error: function (error) { console.log(error.message); getPlayers(containedIn); } }); };
现在,这里是我想称之为“问题”的事情:它经常发生,这个“错误”回调是这样启动的:
Received an error with invalid JSON from Parse: Error: getaddrinfo ENOTFOUND api.parse.com at errnoException (dns.js:44:10) at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:94:26)
(当然,使用代码107)所以我在Parse文档中搜索,它说完全相同的事情:“收到一个无效的JSON错误”.是啊.
我使用Parse.com提供的Parse SDK(npm安装解析)
我还尝试修改一下Parse代码,将文件parse / node_modules / xmlhttprequest / lib / XMLHttpRequest.js(Parse包版本:1.5.0)的第361行的主机名替换为主机名,而不是’工作,所以我删除了我的变化.
(顺便提一下,我发现一个解决方案是关于使用ulimit来改变可以解决问题的内存使用限制,但实际上我没有必要的权限来执行这个命令)