sql >> Databasteknik >  >> NoSQL >> Redis

Returnera hgetall lista från redis i nodejs

Det korta svaret är att du inte tänker asynkront. Eftersom du använder asynkrona funktioner i din funktion måste din funktion också vara asynkron.

Eftersom du inte postade resten av din kod, här är grundidén:

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
        });
    });
});

Förhoppningsvis hjälper det till att reda ut saker och ting.



  1. MongoDB-aggregationsjämförelse:group(), $group och MapReduce

  2. Redis flera prenumeranter

  3. MongoDB:samla $project add-fält med statiskt värde

  4. Node.js - Session kvarstår inte genom res.redirect()