3

私はmongooseがmongodbに接続することに関する興味深い問題に出くわしました。それは次のような詳細なエラーを生成します

    e:\Mentor_Resources\node\node_twitter_bootstrap>node app
Express server listening on port 3000
Trace: error occure when start to connect dbError: connection closed
    at e:\Mentor_Resources\node\node_twitter_bootstrap\server\module\word.js:14:
17
    at Connection.open (e:\Mentor_Resources\node\node_twitter_bootstrap\node_mod
ules\mongoose\lib\connection.js:201:5)
    at Db.open (e:\Mentor_Resources\node\node_twitter_bootstrap\node_modules\mon
goose\node_modules\mongodb\lib\mongodb\db.js:247:16)
    at Server.connect.connectionPool.on.server._serverState (e:\Mentor_Resources
\node\node_twitter_bootstrap\node_modules\mongoose\node_modules\mongodb\lib\mong
odb\connection\server.js:413:7)
    at EventEmitter.emit (events.js:115:20)
    at connection.on.connectionStatus (e:\Mentor_Resources\node\node_twitter_boo
tstrap\node_modules\mongoose\node_modules\mongodb\lib\mongodb\connection\connect
ion_pool.js:108:15)
    at EventEmitter.emit (events.js:91:17)
    at Socket.closeHandler (e:\Mentor_Resources\node\node_twitter_bootstrap\node
_modules\mongoose\node_modules\mongodb\lib\mongodb\connection\connection.js:401:
12)
    at Socket.EventEmitter.emit (events.js:88:17)
    at Socket._destroy.destroyed (net.js:364:10)

マングースのコード スニペットは次のとおりです。

var mongoose = require('mongoose');

mongoose.connect("mongodb://localhost/word-sentence",function(err) {
    if(err)
        console.trace('error occure when start to connect db' + err);
});

私はmongodbが開いていると確信しており、mongodbを数回再起動しましたが、エラーがまだ存在しているため、Windows XPを再起動し、問題が消えて再試行しました。すべて問題ないので、理由を知りたいですか?

4

2 に答える 2

1

mongoose.connect()コードで使用しているように、コールバック関数を受け入れていません。つまり、マングースのコードスニペットです。

var mongoose = require('mongoose');

mongoose.connect("mongodb://localhost/word-sentence",function(err) {
    if(err)
        console.trace('error occurred, when attempted to connect db. Error: ' + err);
});

したがって、次のことから始めることをお勧めします。

var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/word-sentence');
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function callback () {
  // yay connected!
});

繰り返しますが、からのコールバックで引数を期待することはできませんdb.open('open', function cb(){})

これらのクイック スタート、 mongoose docsを参照することをお勧めします - docs & mongodb/mongoose close connectionで競合が見つかった場合にソース コードにジャンプする方法を説明します

于 2013-04-23T10:15:47.400 に答える