JavaScript-有条件地调用函数
JavaScript - conditionally call a function
如果我希望我的后端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) {});
相关文章:
- 是否可以将一个函数输入连接到另一个函数调用的文本
- 在输入字段上有两个函数调用,一个在Blur上,一个不在Angular中
- 如何在Javascript函数调用中循环变量
- Javascript:应为赋值或函数调用,但实际看到的却是表达式
- 如何远程检查JavaScript应用程序的函数调用堆栈
- javascript函数调用不起作用
- 为什么这个函数调用会破坏程序并导致未定义的变量
- 如何通过函数调用设置图像的src
- 从全局函数调用Ember控制器上的方法
- 为什么Jquery$.ajax在函数调用中触发所有statusCode,即使调用成功
- JavaScript函数调用(arg1)(arg2)
- 打印链接时,将javascript函数调用到链接中
- 在函数调用中封装数据除了隐藏数据之外还有什么优点
- 无法从JavaScript中的函数调用对象属性
- 对中的函数调用进行排序是回调的唯一方法
- 函数调用方法有什么用
- Javascript:JSHint:应为赋值或函数调用,但实际看到的却是表达式
- HTML5(Bootstrap)通过函数调用运行动画
- 函数调用不起作用
- 函数中的Javascript函数调用