Tak więc chcę pobrać dużą ilość danych na temat Parse, dobrym rozwiązaniem, które znalazłem jest stworzenie funkcji rekurencyjnej: gdy dane zostaną znalezione, uruchom inne żądanie. Droga Robię to jest całkiem prosta:Analiza SDK JavaScript z Node.js ENOTFOUND
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);
}
});
};
Teraz tutaj jest to, co chciałbym nazwać „problem”: to się stało, bardzo często, że „błąd” callback jest uruchamiany z tym:
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)
(z kodem 107, oczywiście), więc szukałem w dokumentacji Analiza składni i mówi dokładnie to samo: „wystąpił błąd z nieprawidłowym JSON”. Tak.
Używam Parse SDK dostarczonych przez Parse.com (npm install parse
)
Próbowałem też zmodyfikować nieco kod Parse z wymianą klucza host
przez „hosta” na linii 361 pliku parse/node_modules/xmlhttprequest/lib/XMLHttpRequest.js
(Parse wersja pakietu: 1.5.0), i to nie zadziałało, więc usunąłem moje zmiany.
(Nawiasem mówiąc, znalazłem rozwiązanie rozmawiając na temat korzystania ulimit
zmienić limit wykorzystania pamięci, które mogą rozwiązać ten problem, ale w rzeczywistości, nie mam praw niezbędnych do wykonania tego polecenia)
Co to było rozwiązanie ulimit? – smremde
Znalazłem go [tutaj] (https://www.parse.com/questions/received-an-error-with-invalid-json-from-parse-error-connect-emfile), ale w rzeczywistości nie jest to ten sam błąd –