在链接的javascript函数中将数组导入为参数

时间:2012-09-21 19:03:41

标签: javascript chaining

我在javascript中了解callapply并且能够将它们应用于简单的函数,但在将它们应用于链式方法调用时,我完全感到困惑,如下所示:

db.collection("posts").find({}, {limit:10, sort:[['views', -1]]}).toArray(function(err, posts) {
   console.log(posts)
});

是否可以使用[{}, {limit:10, sort:[['views', -1]]} ]call将数据中的参数(例如apply)传递到上述方法中?

我想用它轻松访问&通过将参数保存在外部数组中来修改参数。

谢谢

2 个答案:

答案 0 :(得分:0)

我认为没有办法保持链接。您需要存储中间结果。

var posts = db.collection("posts");
posts
    .find.apply(posts, argsarray)
    .toArray(function(err, posts) {
        console.log(posts)
    });

答案 1 :(得分:0)

您可能知道,这些功能相同:

obj.func(1, 2, 3);
obj.func.apply(obj, [1, 2, 3]);

考虑到这一点,您可以执行以下操作:

db.collection("posts").find.apply(
  db.collection("posts")
  [ {}, {limit:10, sort:[['views', -1]]} ]
).toArray(...);

当然,这是非常低效的,因为你会两次调用该集合。所以你可以这样做:

var collection = db.collection("posts");
collection.find.apply(
  collection
  [ {}, {limit:10, sort:[['views', -1]]} ]
).toArray(...);