0

私は Node で webapps の開発を始めているので、このテクノロジーについてはまったくの初心者です。

私はいくつかの例を実行し、それを実行することができました。

ただし、Mongodb を使用しようとしていますが、正しく実行できません。接続は機能しているようですが、find() メソッドを呼び出して localhost:3000/near (findAll ドキュメントを作成する URL) に移動すると、ブラウザーは約 30 分読み込みを行い、何も返されません。 ( ERR_EMPTY_RESPONSE )。

これは私のコードです:

app.js

app.get('/near', function(req, res){
    server.findAll( function(error,docs){
        res.render('near', { 
                title: 'Cerca tuyo!',
                places:docs
        });
    })
});

そして、これは私のServer.jsです

//constructor
AppServer = function(host, port) {
  this.db= new Db('node-mongo-places', new Server(host, port, {safe: false}, {auto_reconnect: true}, {}));
  this.db.open(function(){});
};

//Devuelve la colección de "places"
AppServer.prototype.getCollection= function(callback) {
  this.db.collection('places', function(error, places_collection) {
    if( error ) callback(error);
    else callback(null, places_collection);
  });
};


//Devuelve todos los contenidos de la DB places
AppServer.prototype.findAll = function(callback) {
    this.getCollection(function(error, places_collection) {
      if( error ) callback(error)
      else {
        places_collection.find().toArray(function(error, results) {
          if( error ) callback(error)
          else callback(null, results)
        });
      }
    });
};

console.log() を書いているコードをデバッグしたところ、 からのコールバック関数に到達していないようです。places_collection.find().toArray(function(error, results) {

サーバーが何も返さない理由は何ですか?


!!! 編集:

mongodb への接続が正常かどうかをテストするコードを見つけましたが、そうではないと表示されています。[Error: failed to connect to [localhost:27017]]

したがって、問題は接続にあります。最初にmongodbを実行する必要がありますか? 私は app.js 自体がそれをやってくれると思っていました!

4

1 に答える 1

1

この質問に対する答えを得ました:

npm install mongodb言ったように、私はそれがすべてをインストールすると思った。ただし、そうではないので、 を実行してなんとか修正できましたsudo apt-get install mongodb

インストールが完了すると、アプリ自体が mongodb を実行します。

これを mongodb open() メソッドに追加して、何が起こっているかを確認できるようにしました。

this.db.open(function(error,db){
    if(error) {
        console.log(error);
    } else {
        console.log("connected to mongod with no problems...");
    }
  });
于 2013-05-15T18:47:37.633 に答える