Skip to content

Instantly share code, notes, and snippets.

@cleuton
Created May 21, 2014 12:33
Show Gist options
  • Save cleuton/a905354688db729a5c1f to your computer and use it in GitHub Desktop.
Save cleuton/a905354688db729a5c1f to your computer and use it in GitHub Desktop.
Async waterfall sample
async.waterfall([
function(callback){
// ***** Task 1: Apaga o banco de dados
db.once('open', function () {
db.db.dropDatabase(function(err) {
if(err != null) {
console.log('Erro ao apagar o banco: ' + err);
}
else {
callback(null);
}
});
});
},
function(callback){
// ***** Task 2: Abre o banco novamente
db = Mongoose.createConnection('mongodb://localhost:27017/mazedb');
db.once('open', function () {
callback(null);
});
},
function(callback){
// ***** Task 3: Grava o usuário 1
var usu1 = new GameUser({nome: 'Cleuton',senha: 'teste',nivel: 1});
usu1.save(function (err) {
if (err) {
console.log('erro ao criar gameusers');
}
else {
callback(null, usu1);
}
});
},
function(usu1, callback) {
// ***** Task 4: Grava o primeiro UserGame do usuário 1
var game1 = new UserGame({_user: usu1._id,data: new Date(),levelPlayed: 1,
seconds : 20});
game1.save(function (err) {
if (err) {
console.log('erro ao criar usergame 1: ' + err);
}
else {
callback(null, usu1);
}
});
},
function(usu1, callback) {
// ***** Task 5: Grava o segundo UserGame do usuário 1
var game1 = new UserGame({_user: usu1._id,data: new Date(),levelPlayed: 5,
seconds : 30});
game1.save(function (err) {
if (err) {
console.log('erro ao criar usergame 2: ' + err);
}
else {
callback(null, usu1);
}
});
},
function(usu1, callback) {
// ***** Task 6: Lista os usergames populando o usuário 1
UserGame.find().populate('_user').exec(function(err,jogos) {
if (err) {
console.log('Erro ao recuperar os jogos');
}
else {
console.log('Jogos : ' + jogos.length);
for (var x=0; x<jogos.length;x++) {
console.log('Data Jogo : ' + jogos[x].data);
console.log('Usuario Jogo : ' + jogos[x]._user.nome);
console.log('Nivel : ' + jogos[x].levelPlayed);
console.log('Segundos : ' + jogos[x].seconds);
}
callback(null, usu1);
}
});
},
function(usu1, callback) {
// ***** Task 7: Insere os user records:
var ur1 = new UserRecord({_user: usu1._id,levelPlayed: 5,
seconds : 30});
console.log('ur1 0: ' + ur1._user);
ur1.save(function (err) {
if (err) {
console.log('erro ao criar userRecords 1');
}
else {
callback(null, usu1);
}
});
},
function(usu1, callback) {
// ***** Task 8: Insere os absolute records:
var ur1 = new AbsoluteRecord({_user: usu1._id,level: 5,
seconds : 30});
console.log('ur1 *: ' + ur1._user);
ur1.save(function (err) {
if (err) {
console.log('erro ao criar AbsoluteRecords 1: ' + err);
}
else {
callback(null, usu1);
}
});
},
function(usu1, callback) {
// ***** Task 9: Insere sessão:
console.log('usu1 **: ' + usu1);
console.log('id **: ' + usu1._id);
GameUser.findOne({_id : usu1._id}, function(err,usu) {
console.log('Encontrado: ' + usu);
if (err) {
console.log('erro ao recuperar usuario: ' + err);
}
else {
console.log('usu : ' + usu);
var ses1 = new Session({ _user : usu._id, data : new Date(),
lastUpdate : new Date(), variables : []});
ses1.save(function (err) {
if (err) {
console.log('erro ao criar Session 1: ' + err);
}
else {
callback(null, ses1);
}
});
}
});
},
function(ses1, callback) {
// ***** Task 10: Insere variável e grava a sessão:
ses1.variables.push({teste: 555});
ses1.save(function (err) {
if (err) {
console.log('erro ao salvar Session 1: ' + err);
}
else {
callback(null, ses1);
}
});
},
function(ses1, callback) {
// ***** Task 11: Recupera a sessão:
Session.findOne().populate('_user').exec(function(err,sessao) {
console.log('sessao recuperada: ' + sessao);
if (err) {
console.log('erro ao recuperar Session 1: ' + err);
}
else {
console.log('variavel da sessao: ' + sessao.variables[0].teste);
callback(null, ses1);
}
});
}
], function (err, result) {
console.log('**** 7777');
db.close();
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment