如果我希望我的后端Node.js API是通用的,我想让客户自己确定他们是否需要'精简'MongoDB查询或完整查询。
为了回到JSON(实际上是POJSO,而不是JSON),我们像这样使用lean():
Model.find(conditions).limit(count).lean().exec(function (err, items) {});
但是,如果我想有条件地调用lean()?
if(isLean){
Model.find(conditions).limit(count).lean().exec(function (err, items) {});
else(){
Model.find(conditions).limit(count).exec(function (err, items) {});
}
这有两个不同的电话并不是什么大不了的事情,但想象一下,如果我们有多个条件,而不仅仅是isLean
,那么我们会有一个因素的事情发生在我们有很多电话的地方,而不仅仅是两个不同的。
所以我想知道有条件地呼叫lean()
的最佳方法是什么 - 我唯一的想法就是如果isLean
是假的话,将精益变成无操作......
这将涉及一些猴子修补TMK -
function leanSurrogate(isLean){
if(isLean){
return this.lean();
}
else{
return this;
}
}
任何人都有更好的东西?
(或者mongoose API已经有了这个:lean(false)
,lean(true)
...并且默认为true ...)
答案 0 :(得分:5)
我认为你过分思考这一点。您不必限制自己一次性使用一系列长方法调用。
您可以在需要的地方进行分解,从而避免重复代码:
var query = Model.find(conditions).limit(count);
if (isLean) {
query = query.lean();
}
query.exec(function (err, items) {});