J'utilise node_redis pour fournir un service de noeud avec une représentation JSON des objets que je reçois de redis. Je pense que c'est probablement assez élémentaire pour beaucoup d'entre vous, mais je suis perplexe. J'arrive au point où j'envoie ma réponse avant J'ai été à travers tous mes hashes et les ai stockés. Voici le coffeescript:Comment convertir les hachages redis en JSON?
objects = []
client.keys 'objects*', (err,keys) ->
for key in keys
client.hgetall key, (err,obj) ->
objects.push obj
response.end JSON.stringify objects
et JavaScript généré:
objects= [];
client.keys('objects*', function(err, keys) {
var key, _i, _len, _results;
_results = [];
for (_i = 0, _len = keys.length; _i < _len; _i++) {
key = keys[_i];
_results.push(client.hgetall(key, function(err, obj) {
return objects.push(obj);
}));
}
return _results;
});
return response.end(JSON.stringify(objects));
Je ne sais pas comment mettre mon code en vacances alors qu'il attend la substance intérieure pour terminer. Je pense qu'il y a un moyen de le gérer, mais je ne vois rien. Merci à tous.
Merci ... cela * va * résoudre mon problème. Je me suis dit qu'il me manquait un motif qui retarderait l'exécution jusqu'à ce que tout soit terminé, mais je me suis trompé à plusieurs reprises auparavant. En ce qui concerne "changer la façon dont vous stockez les hachages", je suis toujours ouvert aux suggestions. Je suis fraîchement sorti de relationnelDB-land et je suis habitué à saisir facilement un tas d '«objets» basés sur des critères arbitraires. – CircusNinja
J'ai passé un temps looooong avec redis en essayant d'abord de comprendre comment structurer mes données afin qu'il soit plus facile d'interroger. Je me suis retrouvé à écrire beaucoup de code de nœud avec des fonctions asynchrones "internes" et "externes" et ensuite à rendre une réponse à la fin. En fin de compte, j'ai modifié mon schéma pour pouvoir extraire des données, puis les filtrer. Cela dépend toutefois de votre cas d'utilisation, il y a des raisons légitimes de le faire de cette façon. – tjarratt