Redis
 sql >> Database >  >> NoSQL >> Redis

Restituisce l'elenco hgetall da redis in nodejs

La risposta breve è che non stai pensando in modo asincrono. Poiché nella tua funzione stai utilizzando funzioni asincrone, anche la tua funzione deve essere asincrona.

Dal momento che non hai pubblicato il resto del codice, ecco l'idea di base:

var client = require('redis').createClient();

function createMobs(callback) {
    var mobObject = { name: 'Goblin' };

    client.hmset('monsterlist', 'mobs', JSON.stringify(mobObject), function(err) {
        // Now that we're in here, assuming no error, the set has went through.

        client.hgetall('monsterlist', function(err, object) {
            // We've got our object!

            callback(object);
        });

        // There is no way to run code right here and have it access the object variable, as it would run right away, and redis hasn't had time to send you the data yet. Your myMobs function wouldn't work either, because it is returning a totally different function.
    });
};

app.get('/create', function(req, res) {
    createMobs(function(object) {
        res.render('mobs.jade', {
            mobs: object
        });
    });
});

Spero che questo aiuti a chiarire le cose.