2017-05-20 7 views
0

ノードjsをフロントエンドとして使用し、mongodbをバックエンドとして使用しています。私は成功した接続を得た。しかし、mongodbで実行されているすべてのプロセスをスローするとエラーが発生します。私のコードは以下の通りです。nodejsドライバを使用してmongodbで現在の操作を取得する方法

var Db = require('mongodb').Db, Server = require('mongodb').Server; 
     var db = new Db('admin', new Server(conf.host, conf.port)); 
     db.open(function(err, db1) { 
      var adminDb = db1.admin(); 
      adminDb.authenticate(conf.user, conf.password, function(err, result) { 
       if(result == true) { 
        var obj = adminDb.currentOp({"active":true}); 
        console.log("output="+output); 
       } 

      }); 
    }); 

以下のエラーが発生しています。

TypeError: adminDb.currentOp is not a function

答えて

1

あなたは.command()をしたい:

adminDb.command({ "currentOp": 1, "active": true },function(err,result) { 
     // code in here 
    }); 

あなたがこれまでのものが「実際に」、その後のmongoシェルに行き、最後に()括弧なしの関数を入力し、実行する方法を探している場合。これで定義が表示されます。 currentOp()ため

すなわち:

> db.currentOp 

function (arg) { 
     var q = {}; 
     if (arg) { 
      if (typeof(arg) == "object") 
       Object.extend(q, arg); 
      else if (arg) 
       q["$all"] = true; 
     } 

     var commandObj = {"currentOp": 1}; 
     Object.extend(commandObj, q); 
     var res = this.adminCommand(commandObj); 
     if (commandUnsupported(res)) { 
      // always send legacy currentOp with default (null) read preference (SERVER-17951) 
      var _readPref = this.getMongo().getReadPrefMode(); 
      try { 
       this.getMongo().setReadPref(null); 
       res = this.getSiblingDB("admin").$cmd.sys.inprog.findOne(q); 
      } finally { 
       this.getMongo().setReadPref(_readPref); 
      } 
     } 
     return res; 
    } 
+0

スーパーニール。そのうまく動作します。ありがとうたくさん:) – selvan

+0

また、mongodbのSLAVE STATUSを取得する方法を教えてください。 – selvan

+0

@selvanそれは別の質問でしょう。あなたが本当に必要なら、[Ask One](http://stackoverflow.com/questions/ask)。しかし、私はすでに "大部分"のことは実際には '.command()'であり、どのようにさまざまなシェルメソッドが実際にどのように実装されているかを調べる方法も教えています。 –

関連する問題