0

モンクでmongodbデータベースを使用してnode.jsのチュートリアルに従っているときに問題が発生しました。mongo コンソールでデータベース コマンドを実行すると、データベース nodetest1 に 3 つのエントリがあることがわかりますが、これを実行しても何も返されません。

router.get('/', function(req, res, next) {
    var db = req.db;
    var collection = db.get('usercollection');
    collection.find({},{},function(e,docs){
        res.send(docs);
    });
});

これは、find メソッドを使用したときの mongo コンソールからの出力です。

> db.usercollection.find().pretty()
{
        "_id" : ObjectId("55b17a551efb190c06c38d31"),
        "username" : "testuser1",
        "email" : "testuser1@testdomain.com"
}
{
        "_id" : ObjectId("55b17a5f1efb190c06c38d32"),
        "username" : "testuser2",
        "email" : "testuser2@testdomain.com"
}
{
        "_id" : ObjectId("55b17a5f1efb190c06c38d33"),
        "username" : "testuser3",
        "email" : "testuser3@testdomain.com"
}

さらに情報が必要な場合は、それを提供します。あなたが私を助けてくれることを願っています.私はこの問題に45分間立ち往生しており、解決策を見つけようとしています.

更新:これがmongodの開始方法です

mongod --dbpath "C:\Users\Victor\OneDrive\Programming\NodeJS\DatabaseSetup\data"

データベースへの接続は app.js にあります。

var mongo = require('mongodb');
var monk = require('monk');
var db = monk('localhost:27017/DatabaseSetup');

app.use(function(req,res,next){
  req.db = db;
  next();
});

localhost:3000/userlist でプログラムを実行すると、データベースからデータが取得されませんが、コンソールには次のように表示されます。

2015-07-24T03:13:28.127+0200 I NETWORK  [initandlisten] connection accepted from 127.0.0.1:57961 #151 (6 connections now open)
4

1 に答える 1

1

上記の情報を参考にすると、データベース接続文字列が期待どおりに機能しない可能性があります。

mongod次のようにサーバーのインスタンスを開始していると自称します。

mongod --dbpath "C:\Users\Victor\OneDrive\Programming\NodeJS\DatabaseSetup\data"

次に、シェルに接続できます。つまり、次のようになります。

mongo

そして、すべて問題ありません。

ここでの問題は、デフォルトで実際に接続している「データベース」が他の宣言なしで「テスト」と呼ばれ、物理データファイルを保存するパスとしての名前ではないことです。

したがって、モンクをそのデータに接続するには、次のようにします。

var db = require('monk')('localhost/test');

データが保存されている場所と同じデータベース名に接続しています。

別のデータベース名を作成したい場合は、次のようにします。

mongo
> use DatabaseSetup

またはコマンドラインから:

mongo DatabaseSetup

いずれの場合も、含まれているデフォルトのデータベースが切り替わります。次に、その名前空間でデータを作成できます。

ただし、それ以外の場合、データは「テスト」に存在する可能性が高いため、それを使用する必要があります。


そこの最初の文をもう一度読んでください。おそらく、データベース コンテナー名は「nodetest1」です。

var db = require('monk')('localhost/nodetest1');
于 2015-07-24T02:32:10.733 に答える