有没有人有任何建议,或者知道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消费形式。我想我可以创建仅包含函数内容的文件?但所有这些听起来有点混乱,我希望其他人可能遇到问题,并有一个简洁的解决方案。
答案 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时需要。
这是相对简单的资源管理。