Сферический (в вакуме) пример с mySQL и библиотекой
async. Все пользователи которые ещё не "чуваки" становятся таковыми. Обработка пользователей идёт последовательно.
var async = require('async');
var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'localhost',
user : 'me',
password : 'secret',
database : 'my_db'
});
connection.connect();
async.auto({
users: function (cb) {
connection.query("SELECT `id`, `name`, `isDude` FROM `users`", function(err, rows) {
cb(err, rows);
});
},
handle: ['users', function (cb, results) {
async.forEachOfSeries(results.users, function (user, key, mapCb) {
if (user.isDude) return mapCb();
connection.query("UPDATE `users` SET `isDude`=1 WHERE `id`=?", [user.id], mapCb);
}, cb);
}]
}, function (err) {
if (err) {
console.error(err);
} else {
console.log('All users is dudes, bro!');
}
connection.end();
});