Redis
 sql >> Baza danych >  >> NoSQL >> Redis

Zwracanie wartości z funkcji asynchronicznej node.js

Jeśli client.exists zwraca obietnicę, ten sam kod można zapisać jak poniżej:

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

  }

Jeśli client.exists akceptuje tylko wywołanie zwrotne, wtedy kod można zapisać jako:

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

  }

W drugiej wersji zauważ, że opakowałem client.exists wywołanie funkcji asynchronicznej i wywołanie za pomocą await słowo kluczowe.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Nieudana kompilacja klienta redis nie powiodła się

  2. Django Celery otrzymuje liczbę zadań

  3. Kiedy używać magazynu klucza/wartości, takiego jak Redis, zamiast/obok bazy danych SQL?

  4. StackExchange.Redis jak subskrybować wiele kanałów

  5. Redis — wygasłe indeksy nie są usuwane