How to use “q” module for refactoring mongoose code?

后端 未结 5 511
野趣味
野趣味 2020-12-31 04:30

I\'m using mongoose to insert some data into mongodb. The code looks like:

var mongoose = require(\'mongoose\');
mongoose.connect(\'mongo://localhost/test\')         


        
5条回答
  •  爱一瞬间的悲伤
    2020-12-31 04:57

    With alternative deferred promise implementation, you may do it as following:

    var mongoose = require('mongoose');
    mongoose.connect('mongo://localhost/test');
    var conn = mongoose.connection;
    
    // Setup 'pinsert', promise version of 'insert' method
    var promisify = require('deferred').promisify
    mongoose.Collection.prototype.pinsert = promisify(mongoose.Collection.prototype.insert);
    
    var user1, user2;
    // insert users
    conn.collection('users').pinsert([{/*user1*/},{/*user2*/}])
    // insert channels
    .then(function (users) {
      user1 = users[0]; user2 = users[1];
      return conn.collection('channels').pinsert([{userId:user1._id},{userId:user2._id}]);
    })
    // insert articles
    .match(function (channel1, channel2) {
      return conn.collection('articles').pinsert([{userId:user1._id,channelId:channel1._id},{}]);
    })
    .done(function (articles) {
      // Do something with articles
    }, function (err) {
       // Handle any error that might have occurred on the way
    });    
    

提交回复
热议问题