向 Bluebird promise 添加方法
Adding a method to Bluebird promise
我已经承诺了 Mongoose。我有一些扩展 Mongoose Query 的方法,现在需要将它们添加到 Bluebird。我不介意扩展 Mongoose,但不想对这个更加全球化的库采用相同的方法。通过文档我看到了一些潜力,但我不确定。
我想以close/clean的身份出现如下:
Model.findAsync().toCustom();
toCustom
基本上是 toJSON 的一种形式,它 1) 执行查询和 2) 自定义输出 results/create 自定义错误等...非常简单。
实现上述目标的最简洁方法是什么?我想避免每次都这样做:
Model.findAsync().then(function(docs) {
return toCustom(docs);
}, function(err) {
return toCustom(err);
});
你明白了...
Bluebird 实际上直接支持您的用例。如果您需要发布一个以您自己的自定义方式扩展 bluebird 的库,您可以通过以下方式获得 bluebird 的新副本:
var Promise = require("bluebird/js/main/promise")();
Promise.promisifyAll(require("mongoose")); // promisify with a local copy
Promise.prototype.toCustom = function(){
return this.then(toCustom, toCustom); // assuming this isn't just `.finally`
};
您可能还想以某种方式导出它。此功能专为图书馆作者和获取蓝鸟的独立副本而设计。请参阅维基中的 for library authors 部分。
我已经承诺了 Mongoose。我有一些扩展 Mongoose Query 的方法,现在需要将它们添加到 Bluebird。我不介意扩展 Mongoose,但不想对这个更加全球化的库采用相同的方法。通过文档我看到了一些潜力,但我不确定。
我想以close/clean的身份出现如下:
Model.findAsync().toCustom();
toCustom
基本上是 toJSON 的一种形式,它 1) 执行查询和 2) 自定义输出 results/create 自定义错误等...非常简单。
实现上述目标的最简洁方法是什么?我想避免每次都这样做:
Model.findAsync().then(function(docs) {
return toCustom(docs);
}, function(err) {
return toCustom(err);
});
你明白了...
Bluebird 实际上直接支持您的用例。如果您需要发布一个以您自己的自定义方式扩展 bluebird 的库,您可以通过以下方式获得 bluebird 的新副本:
var Promise = require("bluebird/js/main/promise")();
Promise.promisifyAll(require("mongoose")); // promisify with a local copy
Promise.prototype.toCustom = function(){
return this.then(toCustom, toCustom); // assuming this isn't just `.finally`
};
您可能还想以某种方式导出它。此功能专为图书馆作者和获取蓝鸟的独立副本而设计。请参阅维基中的 for library authors 部分。