¿Cómo usar el módulo “q” para refactorizar el código de mangosta?
Estoy usando la mangosta para insertar algunos datos en mongodb. El código se ve como:
<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>
Puedes ver que hay muchas devoluciones de llamadas anidadas allí, así que estoy tratando de usarq para refactorizarlo.
Espero que el código se vea como:
<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>
Pero no sé cómo hacerlo.