Redis
 sql >> база данни >  >> NoSQL >> Redis

Връщаща стойност от асинхронна функция node.js

Ако client.exists връща обещание, същият код може да бъде написан както по-долу:

empId: async (obj, params, ctx, resolverInfo) => {

    const exists = await client.exists(obj.empId);

    if (exists === 1) {
      return getAsync(obj.empId);
    }

    return await db.one('SELECT * FROM iuidtest WHERE empid = $1', [obj.empId])
      .then(iuidtest => {
        return iuidtest.empid;
      });

  }

Ако client.exists приема само обратно извикване, тогава кодът може да бъде написан като:

empId: async (obj, params, ctx, resolverInfo) => {

    async function empIdExists(empId) {

      return new Promise(function resolver(resolve, reject) {

        client.exists(obj.empId, function(err, reply) {

          if (err) {
            reject(err);
            return;
          }

          if (reply == 1) {
            resolve(1);
            return;
          } else {
            resolve(0);
            return;

          }

        })

      });

    }

    const exists = await empIdExists(obj.empId);

    if (exists === 1) {
      return getAsync(obj.empId);
    }

    return await db.one('SELECT * FROM iuidtest WHERE empid = $1', [obj.empId])
      .then(iuidtest => {
        return iuidtest.empid;
      });

  }

Във втората версия забележете, че съм обвил client.exists извикване в асинхронна функция и извикване с помощта на await ключова дума.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Laravel + predis + Redis клъстер - ПРЕМЕСТЕН ​​/ няма връзка към 127.0.0.1:6379

  2. Достъп до променлива извън redis конвейерна функция на Laravel

  3. Как да разбера дали sidekiq е свързан към Redis сървър?

  4. Комбинирайте два екземпляра на Redis в един екземпляр с два dbs

  5. Какво е tcp-backlog в redis.conf