javascript方法链接,从数组中添加方法
javascript method chaining, add methods from an array
嗨,我想知道你是否可以帮助我动态构建一个方法链,我怀疑如果你知道如何。。。
使用mongoose和node.js,我正在查询一个mongo数据库。我使用了一个函数,我将一个看起来像这样的对象传递给它:
transaction = {
model: a mongoose model
req: Express.js request object
res: Express.js response object
query: a mongo db query eg, {_id:xxxxx}
populate: [ {
field: 'name_of_doc_field'
select: 'field1,field2'
} ]
}
我正在动态构建查询,在函数中,我不知道需要填充多少字段,也不知道是否需要偏移量或限制。
我想连锁我的发现:
transaction.model.find(transaction.query).skip(offset).limit(limit).exec(function(err, collection_obj){...})
我如何动态构建这个链,我需要测试测试对象中是否提供了偏移量,如果它是向链添加.skip方法,等等,使用populate方法,将有一个项目数组,该数组中的每个项目都需要一个新的populate方法添加到链中。
最后,我需要将exec方法添加到链的末尾。
感谢您提前帮助
// Generated by CoffeeScript 1.4.0
module.exports = {
findMany: function(transaction) {
var collection_obj, limit, offset;
offset = parseInt(transaction.req.query.offset) || 0;
limit = parseInt(transaction.req.query.limit) || 100;
collection_obj = null;
return transaction.model.find(transaction.query).skip(offset).limit(limit).exec(function(err, collection_obj) {
return found(err, collection_obj, transaction.req, transaction.res);
});
},
}
您可以根据transaction
:的内容将链分解为有条件执行的步骤
var q = transaction.model.find(transaction.query);
if (offset) {
q = q.skip(offset);
}
if (limit) {
q = q.limit(limit);
}
if (transaction.populate) {
transaction.populate.forEach(function(pop) {
q = q.populate(pop.field, pop.select);
});
}
q.exec(function(err, collection_obj){...});
相关文章:
- 如何在Angular单元测试中从另一个控制器的rootScope将方法添加到rootScope中
- 如何将onChange方法添加到ExtJS 4表单中的所有字段(textField)中
- 如何向.apply()方法添加回调
- 向 Firebase “push” 方法添加时间戳
- jQuery方法添加一个TextBox
- 如何将方法添加到Html5画布
- 什么'在javascript中将新方法添加到对象中的区别是什么
- 如何在角度控制器中为该方法添加验证
- 是否可以将方法添加到空值的原型中
- 如何使用 util 将方法添加到模块 express() 中
- 在 JavaScript 中隐式地将方法添加到构造函数的原型中
- 如何将另一个方法添加到Pinterest按钮的onlick事件中
- 将方法添加到数字引发异常
- 向方法添加方法
- 通过下拉列表框上的 appendChild 方法添加的项目不会显示在 IE8 下
- 如何将实例方法添加到帆中的所有模型.js
- 为什么我的javascript .push方法添加了太多对象
- 分机.js确认方法添加新行字符
- 使用原型将新方法添加到JScrollPane
- 我想克隆一个 javascript 类. 将方法添加到克隆的属性中,而不实际覆盖现有方法