sql >> Databáze >  >> NoSQL >> Redis

Vraťte seznam hgetall z redis v nodejs

Krátká odpověď je, že nemyslíte asynchronně. Protože ve své funkci používáte asynchronní funkce, vaše funkce musí být také asynchronní.

Protože jste nezveřejnili zbytek kódu, zde je základní myšlenka:

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

Snad to pomůže věci vyjasnit.



  1. jak mít vztahy mnoho k mnoha v redis

  2. Indexování na poli, které je v poli vnořených dokumentů

  3. Čtení DBname.system.indexes selhalo na clusteru Atlas pomocí mongobee po připojení

  4. Sada replik MongoDB s jednoduchým ověřením hesla