MongoDB组织我的js代码库的好方法:javascript预处理器?

时间:2012-07-12 14:40:45

标签: javascript mongodb

我正在寻找好的想法来组织围绕mongo的js代码,因为map reduce函数无法使用客户端作用域,所以必须将所有函数发送(或保存)到服务器(难以重用现有代码)。 我可以使用服务器存储的函数,但因为我们有一个db / client系统是一个太大的范围,似乎不可能使用db范围的函数。

其他想法是使用javascript预处理器,类似:

var mapFunction = function() {
    // @include lib.js
    Lib.foo(this.bar);
}

lib.js:

var Lib = {
    foo : function(bar) {...}
}

并在mapReduce命令中运行生成的mapFunction。

在mongodb map / reduce javascript codebase中是否有任何良好的实践/想法可以实现良好的代码重用(没有系统存储函数)?

1 个答案:

答案 0 :(得分:0)

MongoDB中的

Server-side functions 数据库作用域。但是,通常不鼓励使用与版本控制系统中的其他应用程序一起维护的代码。

如果您从应用程序发送map / reduce命令,则不需要预处理器..您可以调用插入相应代码的变量或函数。

您尚未提及某种特定语言,但这是借鉴MongoDB PHP documentation的示例:

// construct map and reduce functions
$map = new MongoCode("function() { emit(this.user_id,1); }");
$reduce = new MongoCode("function(k, vals) { ".
    "var sum = 0;".
    "for (var i in vals) {".
        "sum += vals[i];". 
    "}".
    "return sum; }");

$sales = $db->command(array(
    "mapreduce" => "events", 
    "map" => $map,
    "reduce" => $reduce,
    "query" => array("type" => "sale"),
    "out" => array("merge" => "eventCounts")));