JavaScript-有条件地调用函数

JavaScript - conditionally call a function

本文关键字:函数 调用 有条件 JavaScript-      更新时间:2023-09-26

如果我希望我的后端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为false,则将精益转换为无操作。。。

这将涉及到一些猴子补丁TMK-

function leanSurrogate(isLean){
  if(isLean){
    return this.lean();
  }
  else{
   return this;
 }
}

有人有更好的吗?

(或者mongoose API已经有了:lean(false)lean(true)…并且默认为true…)

我觉得你想得太多了。您不必限制自己在一次调用中使用一长串方法调用。

你可以把它分解到你需要的地方,这样你就可以避免重复代码:

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