从node.js中的MongoClient执行服务器端函数

时间:2014-02-04 16:04:48

标签: node.js mongodb

我在MongoDB服务器上创建了一组函数,我希望能够在我的nodejs脚本中使用MongoClientAll of the documentation我读过的文章告诉我如何做到这一点,但只有它才会出现。

它在shell中通常如何工作:

mongo database my.script.js
mongo
> use database
> db.loadServerScripts()
> add("This is a string taken in by the add function I just loaded")

这是我尝试/研究过的(请注意CoffeeScript):

MongoClient = require('mongodb').MongoClient

MongoClient.connect 'mongodb://127.0.0.1:27017/database', (e, db) ->
    console.log db.eval              #Function, but not sure what to call with
    console.log db.runCommand        #undefined
    console.log db.loadServerScripts #undefined
    console.log db.load              #undefined
    console.log db.command           #Function, but not sure what to call with
    console.log db.add               #this is one of my custom functions

希望MongoClient可以实现这一点。如果我可以设法加载脚本,似乎我可以使用eval(),但到目前为止,这被证明是困难的部分。或者,我想我可以缩小我的功能并通过eval()运行,但我不想这样做。

1 个答案:

答案 0 :(得分:0)

您可以使用eval(看起来您不需要先加载任何函数,load命令只是为了使shell中的函数可用):

db.eval('add("This is a string taken in by the add function I just loaded")', function(err, result) {
  ...
});

或者,如果你想在传递参数方面更灵活一点:

db.eval('function(x) { return add(x); }', [ ARG ], function(err, result) { ... });

(似乎你不能只使用'add'作为第一个参数,你需要首先将它包装在一个匿名函数中,但我可能会遗漏一些东西......)