Created
May 21, 2014 12:33
-
-
Save cleuton/a905354688db729a5c1f to your computer and use it in GitHub Desktop.
Async waterfall sample
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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