2

最初のNode.jsアプリケーションを構築していますが、 MongoDBで問題が発生しました。私はMongoSkinドライバーを使用しています。

アプリケーションを起動すると、すべてうまく機能します。私はそれを1時間座っておもちゃにすることができ、それは機能し続けます。ただし、何もアクティビティを行わずに数分間そのままにしておくと、次のリクエストでエラーが発生します。

エラー:EventEmitter.emitのServer.connect.connectionPool.on.server._serverState(X:\ Code \ CodeTunnel \ node_modules \ mongoskin \ node_modules \ mongodb \ lib \ mongodb \ connection \ server.js:520:35)で接続が閉じられました(events.js:126:20)at connection.on._self._poolState(X:\ Code \ CodeTunnel \ node_modules \ mongoskin \ node_modules \ mongodb \ lib \ mongodb \ connection \ connection_pool.js:109:15)atEventEmitter。 Socket.EventEmitter.emitのSocket.closeHandler(X:\ Code \ CodeTunnel \ node_modules \ mongoskin \ node_modules \ mongodb \ lib \ mongodb \ connection \ connection.js:427:12)で(events.js:99:17)を発行します(events.js:96:17)at Socket._destroy.destroyed(net.js:358:10)at process.startup.processNextTick.process._tickCallback(node.js:244:9)

mongoskinのドキュメントauto_reconnect=trueで提案されているように、接続文字列に追加しようとしましたが、役に立ちませんでした。

4

1 に答える 1

1

私は最終的にこれを理解しました。解決策はかなり単純です。

マングースを使用する

...または何か他のもの

私はMongoSkinに問題があっただけで、ついにMongooseを学ぶ時間を取った後、とにかくそれを好みます。モデルのパラダイムは素晴らしいものです。特に、各モデルには、ドキュメントへの変更を保存するための独自の永続化メソッドがあるためです。流暢なクエリAPIを作成するためのpromiseの使用は非常に強力で、ネイティブのMongoDBドライバーによって提供される標準のコールバック地獄よりもはるかに読みやすくなっています。コールバック地獄はMongoSkinによってわずかに軽減されるだけであり、より複雑なクエリを読み取ることは依然として非常に困難です。

編集:反対票.....本当に?反対票を投じて、あなたの頭の中をどのように考えていましたか?「マングースは私の好みのORMではないので、ここに反対票があります。」

于 2013-11-06T06:48:08.487 に答える