如何从mongodb-native / node.js执行存储的函数

时间:2011-08-26 03:35:06

标签: mongodb node.js

我正在尝试从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是一个返回整数的简单函数。

有人有想法吗?感谢。

3 个答案:

答案 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);
})