我想在Mongoose做类似的事情。有可能吗?
// defining schema:
Product.queryBuilder.category = function(category) {
return this.find({category: category});
}
Product.queryBuilder.available = function() {
return this.find({availableQuantity: {$gt: 0}});
}
Product.queryBuilder.recent = function(count) {
return this.sort({updatedAt: -1}).limit(count);
}
// in controller:
Product.query.category('men').available().recent(10).exec().then(...)
答案 0 :(得分:0)
不,这根本不起作用。
您需要决定是否要使用mongoose实例方法或静态。如果您正在使用实例方法,则必须首先从数据库中检索文档。执行此操作时,可以在其上调用任何实例方法。并且,在所有实例方法中,您将引用this
作为您的文档。
但是,如果您想使用mongoose静态,则不会通过this
引用该文档。相反,您首先必须从该静态内部执行Model.find(或将检索到的doc作为param传递给static),然后才能对其执行操作。
我的建议是你把它变成一个静态的,你传递静态的查询元素和查询限制,让静态做一个带有传递参数的Product.find,并让它在回调或承诺中返回给你检索到的文件。
答案 1 :(得分:0)
由于没有可用的解决方案,我创建了自己的解决方案。