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

Vrací hodnotu z asynchronní funkce node.js

Pokud client.exists vrátí slib, lze napsat stejný kód jako níže:

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

  }

Pokud client.exists přijímá pouze zpětné volání, pak lze kód zapsat 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;
      });

  }

Ve druhé verzi si všimněte, že jsem zabalil client.exists volání do asynchronní funkce a volání pomocí await klíčové slovo.




  1. Jak uložit výsledek hledání agregovaného stromu katalogu v Redis

  2. Jak mohu v MongoDB mapreduce sloučit objekt hodnot?

  3. Využití vyrovnávací paměti ve fázi řazení přetečení překračuje interní limit

  4. Mohou být oznámení redis key space poslána do redis streamu namísto pub/sub kanálu