Como usar o módulo “q” para refatorar o código do mongoose?
Estou usando o mangusto para inserir alguns dados no mongodb. O código parece:
<code>var mongoose = require('mongoose'); mongoose.connect('mongo://localhost/test'); var conn = mongoose.connection; // insert users conn.collection('users').insert([{/*user1*/},{/*user2*/}], function(err, docs) { var user1 = docs[0], user2 = docs[1]; // insert channels conn.collection('channels').insert([{userId:user1._id},{userId:user2._id}], function(err, docs) { var channel1 = docs[0], channel2 = docs[1]; // insert articles conn.collection('articles').insert([{userId:user1._id,channelId:channel1._id},{}], function(err, docs) { var article1 = docs[0], article2 = docs[1]; } }); }; </code>
Você pode ver que há muitos callbacks aninhados lá, então estou tentando usarq refatorá-lo.
Espero que o código seja parecido com:
<code>Q.fcall(step1) .then(step2) .then(step3) .then(step4) .then(function (value4) { // Do something with value4 }, function (error) { // Handle any error from step1 through step4 }) .end(); </code>
Mas eu não sei como fazer isso.