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) {});