0

次のスタックを使用して mongodb コレクションのリストのサイズ (カウント) を取得する方法はありますか: nodejs+express+mongodb+monk

約束の森に迷い込む前にここまで来ました。

編集:モバイルスタックオーバーフローにありました。コードは次のとおりです。以下のコードはリコールによるものであることに注意してください。私は現在 AF(P)K であるため、実際にはノードを介して実行しませんでした。

EDIT2 : 実際にコードを追加しています。

    // app.js
    // ...
    var express = require('express');
    // ... some more globals goes here
    var mongodb = require('monogdb');
    var monk = require('monk');
    var api = require('./routes/api');
    var db = monk('monogdb://localhost/overland');
    var app = express();

    // ....
    // shove db to every incoming request (as seen here : http://cwbuecheler.com/web/tutorials/2013/node-express-mongo/)
    app.user(function(req,res,next){
      req.db = db;
      next();
    });
    // ready the route
    app.use('/api', api);
    // ....and the rest of the usual express-generated code goes here

...これが私のroute/api.jsの内容です

    // routes/api.js
    // ...
    var express = require('express');
    var router = express.Router();

    router.get('/qstat', function(req, res){
      var db = req.db;
      var qnames = req.query.qnames ? req.query.qnames.split(',') : []; 
      console.log(qnames);
      var stats = {};
      qnames.forEach(function(qname){
          db.get(qname).count({}).then(function(doc){
          stats[qname] = doc; 
        });
      });
      res.set('Content-Type', 'application/json');
      res.send(stats);
    });

    module.exports = router;

私がこれを行うとき、私はそれを期待しています...

    curl -G http://localhost:3080/api/qstat?qnames=u3020,u3021,u3033

私はこれで残ります...

    { 'u3020' : 442, 'u3021' : 143, 'u3033' : 3}

ここで、各キーは mongo コレクション名で、値はそのカウントです。

...代わりに、私は常にこれを残しています:

    {}

それが約束と非同期プロセスに対処する方法ではないことを認識しています。これは、仕事でキューとして使用されるいくつかの mongo コレクションから単純な統計を収集するための、手早く汚い方法として意図されていました。

4

0 に答える 0