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

Returner hgetall-listen fra redis i nodejs

Det korte svar er, at du ikke tænker asynkront. Fordi du bruger asynkrone funktioner i din funktion, skal din funktion også være asynkron.

Da du ikke postede resten af ​​din kode, er her den grundlæggende idé:

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

Forhåbentlig hjælper det med at opklare tingene.



  1. Opdater MongoDB-feltet ved hjælp af værdien af ​​et andet felt

  2. hvordan man kalder optællingsoperation efter find med mongodb java-driver

  3. Redis datastruktur pladskrav

  4. Konverter dato fra millisekunder til ISODate-objekt