sql >> Database >  >> NoSQL >> Redis

Retourneer de hgetall-lijst van redis in nodejs

Het korte antwoord is dat je niet asynchroon denkt. Omdat je asynchrone functies in je functie gebruikt, moet je functie ook asynchroon zijn.

Aangezien je de rest van je code niet hebt gepost, volgt hier het basisidee:

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

Hopelijk helpt dat om dingen op te helderen.



  1. Automatisch gegenereerd veld voor MongoDB met Spring Boot

  2. MongoDB beveiligen tegen externe injectie-aanvallen

  3. HDFS NameNode High Availability in Hadoop

  4. Een getal opmaken als een percentage in SQL