Как использовать модуль «q» для рефакторинга кода мангуста?
Я использую mongoose для вставки некоторых данных в mongodb. Код выглядит так:
<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>
Вы можете видеть, что там много вложенных обратных вызовов, поэтому я пытаюсь использоватьQ рефакторинг это.
Я надеюсь, что код будет выглядеть так:
<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>
Но я не знаю, как это сделать.