JavaScript – 有条件地调用一个函数

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

任何人有更好的东西?

(或者也许mongooseAPI已经有这样的: lean(false)lean(true) …和默认为真…)

我认为你正在反思这一点。 您不必限制自己一次性使用一系列的方法调用。

您可以将其分解到需要的地方,以避免重复代码:

 var query = Model.find(conditions).limit(count); if (isLean) { query = query.lean(); } query.exec(function (err, items) {});