2011-08-17 44 views
2

有没有人有任何建议,或知道任何最佳做法的地方和如何在Java项目中编写和存储JavaScript map/reduce函数以用于MongoDB数据库?在哪里编写和存储java项目中的mongoDB map/reduce函数

我正在寻找的标准是:

当写作和编辑功能,我想语法高亮和错误检查的IDE(我使用Eclipse)提供的好处。

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

我宁愿存放在比数据库本身的源代码的功能,为便于参考,版本控制等

的你是如何解决的任何实例这一问题将是巨大的。

编辑:我不知道我已经正确解释自己,所以这里的另一个走:

我不要求有关基本资源管理。我所追求的是,​​如果可能的话,一个工作环境,在编辑“就地”功能的同时,让我获得IDE的好处。如果我错过了一些非常明显的事情,你将不得不原谅我。

我想避免是什么东西,因为你可能与SQL见,例如当它作为一个类文件中的字符串存储:

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”,你必须把它写在别的地方,然后复制并粘贴它并添加这些字符(或者你可能有一个工具可以做到这一点对你来说 - 你仍然必须这么做)。

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

有没有人这样做,或类似的?我最初的想法只是为每个函数创建一个.js文件,但是.js文件中只有一个匿名函数,在eclipse中验证失败,这使得它没有意义 - 您必须将它分配给var - 这意味着它没有以map/reduce消费的正确形式。我想我可以创建功能内容的文件?但是,这一切听起来有点混乱,我希望有人可能会遇到问题,并有一个整洁的解决方案。

回答

0

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

这是相对直接的资源管理。

+0

也许我在这里错过了一些明显的东西,或者我没有足够好地说出我的问题。我在寻找的是一种创建和编辑map/reduce函数的简单方法,它可以获得IDE的所有好处,并且可以将它们“保留”以作为应用程序的资源使用。 直截了当的资源管理我明白 - 我正在简化创建和编辑这些资源的过程。例如,每个函数都可以保存在一个单独的.js文件中。但是(在Eclipse中)javascript验证将不允许包含以下内容的文件: 'function(){...}' – Russell

+0

我将编辑问题以尝试更好地解释自己。 – Russell

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) 

的buildfile然后将资源打包到资源jar中,该资源jar会与其他所有jar一起部署。