Quindi voglio recuperare una grande quantità di dati su Parse, una buona soluzione che ho trovato è quella di fare una funzione ricorsiva: quando i dati vengono trovati con successo, lanciare un'altra richiesta. Il modo in cui lo sto facendo è piuttosto semplice:PST SDK JavaScript con 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);
}
});
};
Ora, qui è quello che vorrei chiamare la "questione": che accada, molto frequentemente, che la richiamata "errore" è lanciato con questo:
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)
(con il codice 107, ovviamente) Così ho cercato su documentazione Parse, e si dice la stessa cosa: "ha ricevuto un errore con non valida JSON". Si.
sto usando il Parse SDK fornito da Parse.com (npm install parse
)
Ho anche provato a modificare un po 'il codice Parse con la sostituzione della chiave host
da 'hostname' on line 361 del file parse/node_modules/xmlhttprequest/lib/XMLHttpRequest.js
(Parse versione del pacchetto: 1.5.0), e non ha funzionato, quindi ho rimosso le mie modifiche.
(A proposito, ho trovato una soluzione parlando con ulimit
per modificare il limite di utilizzo della memoria che potrebbe risolvere il problema, ma in realtà, non ho i diritti necessari per eseguire questo comando)
Qual era la soluzione ulimit? – smremde
L'ho trovato [qui] (https://www.parse.com/questions/received-an-error-with-invalid-json-from-parse-error-connect-emfile), ma in realtà non è lo stesso errore –