在java项目中编写和存储mongoDB map / reduce函数的位置

时间:2011-08-17 15:57:39

标签: java javascript mongodb

有没有人有任何建议,或者知道Java项目在何处以及如何编写和存储用于MongoDB数据库的javascript map / reduce函数的任何最佳实践?

我正在寻找的标准是:

在编写和编辑函数时,我喜欢IDE提供的语法突出显示和错误检查(我正在使用Eclipse)。

如果可能的话,我不想在完成编辑后将功能复制到其他位置。

我宁愿将函数存储在源代码中而不是DB本身,以便于参考,版本控制等。

你如何解决这个问题的任何例子都会很棒。

编辑:我不确定我是否已正确解释自己,所以这是另一回事:

我不是在询问基本的资源管理。如果可能的话,我所追求的是一个工作环境,它允许我在编辑“就地”功能时获得IDE的好处。如果我遗漏了一些令人目眩的事情,你将不得不原谅我。

我想要避免的是诸如您可能会在SQL中看到的内容,例如当它在类文件中存储为String时:

private static final String MAP_FUNC = 
    "function() { " +
    "   emit(this.id, {total : this.total}); " +
    "};";

或在java属性文件中:

map.func=function() {
\       emit(this.id, {total : this.total});
\   };

你必须输入一些无关的字符,例如“s和\ s。你必须把它写在其他地方,然后复制并粘贴进去并添加这些字符(或者你可能有一个工具来做它为你 - 你仍然必须这样做。)

由于Eclipse在用.js文件编写时验证了javascript,我不想做任何这样的事情。我想将这些函数存储在.js文件中,以便在需要时通过map / reduce调用方便它们。

有人这样做,或类似吗?我最初的想法只是为每个函数创建一个单独的.js文件,但是一个.js文件中只有一个匿名函数,它在eclipse中无法验证,这使得它毫无意义 - 你必须将它分配给一个var - 这意味着它不是正确的map / reduce消费形式。我想我可以创建仅包含函数内容的文件?但所有这些听起来有点混乱,我希望其他人可能遇到问题,并有一个简洁的解决方案。

2 个答案:

答案 0 :(得分:2)

我使用的约定和我在大多数开源项目(包括Spring等人)中看到的是将所有非java文件放在资源目录下的描述性目录下:

module-root/
    src/
        main/
            java/
                (Java sources go here)
            resources/
                log4j.xml
                spring/ (spring xmls go here)
                sql/ (sql scripts go here)
                mongo/ (<-- seems like a good place for mongoDB functions)
        test/
            unit/
                java/ (unit test java sources go here)
                resources/ (unit test specific resources - usually none)
            integration/
                java/ (integration test java sources go here)
                resources/
                    spring/ (usually an ITestAssembly.xml goes here)

然后,构建文件将资源打包到资源jar中,该资源jar将与所有其他jar一起部署。

答案 1 :(得分:0)

我们将JS文件作为应用程序资源放在(Eclipse)项目中,然后在应用程序初始化时,这些文件由Java应用程序(在我们的例子中是Web应用程序或守护进程)读取,存储在单一管理类中然后使用在调用map / reduce时需要。

这是相对简单的资源管理。