I'be試圖鏈方法添加到稱爲「分頁」的查詢對象。如果我將它添加到query.js中,我可以毫無問題地使用它。但是,修改其中一個核心文件並不是一個好主意。如何貓鼬伸出查詢對象
我使用這個代碼,我發現了一些修改,並希望它成爲查詢原型的一部分,但我還沒有上使其工作出Query.js的任何成功。
我該如何做到這一點?有沒有關於如何通過模塊擴展這些核心文件的文檔?我還沒有找到任何適合我的東西。
mongoose.Query.prototype.paginate = function(page, limit, cb) {
var model, query, skipFrom;
if (page == null) {
page = 1;
}
if (limit == null) {
limit = 10;
}
query = this;
model = this.model;
skipFrom = (page * limit) - limit;
query = query.skip(skipFrom).limit(limit);
if (cb) {
return query.run(function(err, docs) {
if (err) {
return cb(err, null, null);
} else {
return model.count(query._conditions, function(err, total) {
return cb(null, total, docs);
});
}
});
} else {
throw new Error("pagination needs a callback as the third argument.");
}
};
伊克!這可行......但直接擴展這樣的庫通常被認爲是髒的,因爲庫的內部可能會將版本更改爲版本。通過庫的簡單升級,您可能會遇到一個非常糟糕的方法。節點庫在圖書館內部發生巨大的內部變化(並且經常是外部變化)方面臭名昭着。如果你願意承擔破壞風險,那麼就可以開火,但是採用「靜態」可能會更安全。 – 2012-11-29 20:48:15