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

Mengembalikan nilai dari fungsi async node.js

Jika client.exists mengembalikan janji, kode yang sama dapat ditulis seperti di bawah ini:

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

  }

Jika client.exists hanya menerima panggilan balik, maka kode tersebut dapat ditulis sebagai:

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

  }

Pada versi kedua, perhatikan bahwa saya telah membungkus client.exists panggil ke fungsi async &dipanggil menggunakan await kata kunci.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Dengarkan perubahan di Redis?

  2. Django Celery tidak dapat meminta postgres db di dalam tugas

  3. Lembar Cheat Pengoptimalan Memori Redis

  4. Bagaimana cara melakukan failover ke node Master baru saat menggunakan Redis dengan Sentinel dan redis-py?

  5. Antrian redis Laravel 5.5 terlalu lambat