我正在尝试从mongodb-native / node.js环境执行存储函数。
我在 db.system.js 中有几个函数。
似乎 Db.executeCommand()是函数,但我不知道如何传递函数名和参数。
我按照建议尝试了db.eval()但是我得到了以下内容。
> db.eval('getValue()', {}, function(er,doc) {console.log(er);console.log(doc);});
{ stack: [Getter/Setter], arguments: [ 'send', undefined ], type: 'non_object_property_call', message: [Getter/Setter] }
null
getValue是一个返回整数的简单函数。
有人有想法吗?感谢。
答案 0 :(得分:4)
假设db是您的开放式数据库处理程序:
db.eval(“myFunction(param,param_n)”,function(error,result){});
看起来您也可以单独传递参数。 https://github.com/christkv/node-mongodb-native/blob/master/lib/mongodb/db.js
答案 1 :(得分:1)
你去了:
function testDB(req,res) {
MongoClient.connect(url, function(err, db) {
if (err) {
console.log(err);
res.send('connection failed');
} else {
db.eval("testFunction()", function(err, output) {
if(err){
console.log("ERROR: "+err);
res.send(err);
return;
}else{
res.send(output);
return;
}
});
db.close();
}
});
}
我假设您将其称为其他API。 您可以根据需要更改功能参数。 此外,我假设您的URL有足够的权限来调用该函数。 如果没有,请使用像RoboMongo这样的mongo工具,并将权限更改为用户。
答案 2 :(得分:0)
这是因为你认为它会返回值,这是异步调用,你必须使用(err,doc)传递一个回调函数来获取返回值
db.eval('addNumbers(4,5)',function(er,doc){
console.log(doc);
})