Redis
 sql >> Teknologi Basis Data >  >> NoSQL >> Redis

Kembalikan daftar hgetall dari redis di nodejs

Jawaban singkatnya adalah Anda tidak berpikir secara tidak sinkron. Karena Anda menggunakan fungsi asinkron dalam fungsi Anda, fungsi Anda juga harus asinkron.

Karena Anda tidak memposting sisa kode Anda, inilah ide dasarnya:

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

Semoga itu membantu memperjelas semuanya.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Redis menemukan hash berdasarkan nilai bidang

  2. Apakah perintah UNLINK selalu lebih baik daripada perintah DEL?

  3. Gunakan Banyak DB Dengan Satu Skrip Redis Lua?

  4. Bagaimana cara menghapus pekerja Resque yang macet/basi?

  5. Bagaimana cara memeriksa nil/null di Redis' Lua cjson?