JavaScript - 有条件地调用函数

时间:2015-10-31 19:10:45

标签: javascript node.js mongodb mongoose

如果我希望我的后端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 ...)

1 个答案:

答案 0 :(得分:5)

我认为你过分思考这一点。您不必限制自己一次性使用一系列长方法调用。

您可以在需要的地方进行分解,从而避免重复代码:

var query = Model.find(conditions).limit(count);

if (isLean) {
    query = query.lean();
}

query.exec(function (err, items) {});