title: How could I bind `save` method using `Q` with mongoose
body: <p>Saying that I have the following schema in <code>User.js</code></p>
  
  <pre><code>var mongoose = require('mongoose');
  var Q = require('q');
  
  var userSchema = new mongoose.Schema({
    phone: {
      type: Number,
      require: true,
      index: {
        unique: true
      }
    }
  });
  module.exports = mongoose.model('User', userSchema);
  module.exports.findOne = Q.nfbind(module.exports.findOne.bind(module.exports));
  module.exports.find = Q.nfbind(module.exports.find.bind(module.exports));
  </code></pre>
  
  <p>And another file <code>testuser.js</code></p>
  
  <pre><code>var mongoose = require('mongoose');
  var Q = require('q');
  var User = require('../User');
  
  var connectionStr = "mongodb://localhost:27017/user-model-test";
  mongoose.connect(connectionStr, function(error) {
    if (error) {
      throw(error);
    }
    console.log("Connect to MongoDB...");
    var testuser = new User({
      phone: 1008611,
    });
    testuser.save = Q.nfbind(testuser.save.bind(testuser));
    testuser.save().then(function () {
      return User.findOne({ phone: 1008611 }).then(function (user) {
        console.log(user.phone);
        mongoose.disconnect();
      }, function (error) {
        throw(error);
      });
    }, function (error) {
      throw(error);
    }).done();
  });
  </code></pre>
  
  <p>Notice that currently I use <code>testuser.save = Q.nfbind(testuser.save.bind(testuser));</code> to bind the <code>save</code>, but I want to do it in <code>User.js</code>, like <code>module.exports.find = Q.nfbind(module.exports.find.bind(module.exports));</code>, is there any way that I could do that?</p>
  
  <p>Thank you.</p>