我怎么能加载其他js脚本并使用mongodb运行它

时间:2015-06-17 03:24:32

标签: javascript mongodb coffeescript

我需要写一堆查询。

每个查询都会分享一些private boolean found = false; private boolean modifiedInorderTraversal(Node newRoot, Node target){ if(newRoot.leftPointer != null){ modifiedInorderTraversal(newRoot.leftPointer, target); } if(newRoot == target){ found = true; } if(newRoot.rightPointer != null){ modifiedInorderTraversal(newRoot.rightPointer, target); } return found; } common data structure

我如何加载function并使用common.js中的functionconstants(我在咖啡中写下了actullay然后将其转换为app.js

我收到js

的错误
  

E QUERY ReferenceError:leading_zero未定义

common.js

mongo localhost:27017/test app.js

app.js

USERS = [
  '477  ',
  '4770 '
]

  leading_zero = function(num, size) {
    var s;
    if (size == null) {
      size = 2;
    }
    s = num + '';
    while (s.length < size) {
      s = '0' + s;
    }
    return s;
  };

1 个答案:

答案 0 :(得分:2)

函数leading_zero需要在您的数据库上。请参阅http://docs.mongodb.org/manual/tutorial/store-javascript-function-on-server/

首先在shell上运行:

db.system.js.save(
   {
     _id: "leading_zero",
     value : function(num, size) {
        var s;
        if (size == null) {
          size = 2;
        }
        s = num + '';
        while (s.length < size) {
          s = '0' + s;
        }
        return s;
      }
   }
)

这将把db上的函数保存为系统函数。

运行db.loadServerScripts();在shell上加载所有脚本。

然后你可以在查询的任何地方调用它。

print(leading_zero(3)) // directly on shell

db.myCollection.find( { $where: "this.credits == myfunc(this.xValue)" } ); // on query