Mysql
 sql >> база данни >  >> RDS >> Mysql

Синхронен mysql в Node.js

Обикновено използвам модел като този по-долу за този тип проблем. Накратко:вземете списък с неща, след което извикайте функция за обработка на списъка; тази функция се извиква, докато списъкът не бъде завършен; събирайте резултатите, докато влизате в акумулатор; когато списъкът е празен, върнете всичко, което сте натрупали чрез обратното извикване. Това е просто още един начин да се постигне това, което @Andrey Sidorov демонстрира в отговора си.

//cb is (err, res) 
function getData(cb){
  var querystr = "SELECT * FROM groups";
  var result = "";

  dbClient.query(querystr, function (err, res, fields) {
      if (err)
          cb(err);
      else {
        var groups = [];
        for (var ndx in res)
          groups = groups.concat(res[ndx].members.split(","));

        getMembers(groups, [], cb);
      }
  });
}

function getMembers(members, sofar, cb){
  var member = members.shift();

  if (!member)
    cb(null, sofar);
  else {
    var memberquery;
    var params;

    if (member.substr(0,1) == "@") {
        memberquery = "SELECT name FROM groups WHERE id = ?";
        params = [member.substr(1, member.length-1)];
    } else {
        memberquery = "SELECT username FROM users WHERE id = ?";
        params = [member];
    }

    dbClient.query(memberquery, params, function(err, res) {
      if (err)
        cb(err);
      else {
        var membername = "";
        if (typeof res[0].username == "undefined") {
            membername = "@" + res[0].name;
        } else {
            membername = res[0].username;
        }

        sofar.push(membername);

        getMembers(members, sofar, cb);
      }
    });
  }
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ПОРЪЧАЙТЕ ПО дата и час ПРЕДИ ГРУПА ПО име в mysql

  2. Безопасност на нишките на MySQL Select Last_Insert_ID

  3. Еквивалентът на функцията на SQLServer SCOPE_IDENTITY() в mySQL?

  4. PHP mysql подреждане на редове

  5. Как да конвертирате MySQL време