我在MongoDB服务器上创建了一组函数,我希望能够在我的nodejs脚本中使用MongoClient
。 All 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()
运行,但我不想这样做。
答案 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'
作为第一个参数,你需要首先将它包装在一个匿名函数中,但我可能会遗漏一些东西......)