そのため、現在Webアプリケーションを作成していて、データベースが必要なので、mongodbとmongooseを使用することにしました。これまではlocalhostですべてをテストしましたが、うまくいきましたが、データをサーバーに移動したいと思っていました。アトラスのことを聞いて自分を登録し、データを「アップロード」しました。
次に、node.jsアプリを介してクラスターに接続します。
mongoose.connect('mongodb+srv://engllucas:p%[email protected]/test');
ポイントでmongodb Atlasサイトの文字列を得ましたConnect Your Application
次に、パスワードを交換しました。
mongoose.connect('mongodb://engllucas:p%[email protected]/test');
これも機能しませんでした。
それはエラーメッセージです:
{ MongoError: failed to connect to server [insight-shard-00-02-quhku.mongodb.net:27017] on first connect [MongoNetworkError: connect ECONNREFUSED 18.194.163.64:27017]
at Pool.<anonymous> (U:\WEBT\ProjectInsight\Quiz\node_modules\mongodb-core\lib\topologies\server.js:503:11)
at emitOne (events.js:115:13)
at Pool.emit (events.js:210:7)
at Connection.<anonymous> (U:\WEBT\ProjectInsight\Quiz\node_modules\mongodb-core\lib\connection\pool.js:326:12)
at Object.onceWrapper (events.js:318:30)
at emitTwo (events.js:125:13)
at Connection.emit (events.js:213:7)
at TLSSocket.<anonymous> (U:\WEBT\ProjectInsight\Quiz\node_modules\mongodb-core\lib\connection\connection.js:245:50)
at Object.onceWrapper (events.js:316:30)
at emitOne (events.js:115:13)
at TLSSocket.emit (events.js:210:7)
at emitErrorNT (internal/streams/destroy.js:64:8)
at _combinedTickCallback (internal/process/next_tick.js:138:11)
at process._tickCallback (internal/process/next_tick.js:180:9)
name: 'MongoNetworkError',
メッセージ: '最初の接続でサーバー[insight-shard-00-02-quhku.mongodb.net:27017]に接続できませんでした[MongoNetworkError:connect ECONNREFUSED 18.194.163.64:27017]'}(node:4920)UnhandledPromiseRejectionWarning:Unhandled promise rejection(rejection id:1):MongoNetworkError:failed to connect to server [insight-shard-00-02-quhku.mongodb.net:27017] on first connect [MongoNetworkError:connect ECONNREFUSED 18.194.163.64:27017](node:4920 )[DEP0018] DeprecationWarning:未処理のプロミス拒否は廃止されました。将来、処理されないpromiseの拒否により、Node.jsプロセスがゼロ以外の終了コードで終了します。
私にも同様の問題があり、クラスター->セキュリティ-> IPホワイトリストの下に私のIPアドレスのホワイトリストを追加することで解決できました。 my current ip address
をクリックする代わりに、グーグルで私のIPを検索して、代わりに貼り付けます。うまくいきますように!
MongoDB Atlasクラスターへの接続でこの問題が発生しました。 2つの異なるコンピューター(Macbook ProとWindows PC)のプロジェクトで作業していたため、この問題を2回解決する必要がありました。
これは、アプリケーションがクラスターに接続しないという問題を解決するために私が考え出したすべてのことに対する私の包括的な答えです。
最初上記の提案のようにIPがホワイトリストに登録されていることを確認します。最も簡単な解決策は、0.0.0.0/0の「すべてのIP」ホワイトリストです。
2番目 VPNを使用している場合は、VPNを確認します。 VPNに接続しているときにクラスターに接続しようとしました。 VPNをオフにすると、接続できました。
番目インターネット設定がクラスターへの接続を妨げていないことを確認します。自宅のXfinity wifiセキュリティ設定が高すぎるため、接続できませんでした。ルーターがポート27017への接続を許可していなかったと思います。この問題が発生しているかどうかをテストする1つの方法は、コンピューターをwifiの代わりにインターネット用の電話につなぎ、接続してみることです。 iPhoneをインターネットのホットスポットとして使用して接続できました。ルーターを出荷時の設定にリセットして、問題を解決しました。
themongodb+srv://
riは、基になるネイティブドライバーに対して有効ではありません。
+ srvを削除するだけでは機能しません。URIにはレプリカホストとreplicaSet/authSourceパラメーターを含める必要があるためです。
1。mongoose 5.0.15にアップグレードし、より短い+ srv形式を使用します
2。Atlasクラスターダッシュボードからフルuriを使用して現在のバージョンを使用し、古いドライバーを選択します(下記のNoteを参照)version uri。
クラスターダッシュボードから接続ボタンを押し、次に(ノードサーバーのIPをホワイトリストに登録していると仮定して)[アプリケーションに接続する]を選択し、[3.4ドライバー以前を使用しています]を押します。結果のURI文字列をパスワードの代わりに使用します。
注: Atlasクラスターダッシュボードの接続ヘルパーでURI文字列を選択するためのダイアログで、「ドライバー3. *または(新しい|古い)を使用しています」と表示されます。 3.6と3.4はドライバーのバージョンではなくサーバーのバージョンを指しているため、これは不適切な言葉の選択です。さらに、あるバージョンのサーバーを使用することと、他のバージョンのサーバーを使用することは、接続に使用されるドライバーとは何の関係もありません。この場所に、使用するURIのバージョンを決定する実際の依存関係があります。
「IPホワイトリスト」の問題です。一度編集して更新すれば、問題なく動作するはずです。
上記の答えは正しいですが、1ポイント追加したいだけです。
セキュリティの観点からは良くありません。
私も同様の問題があり、_Clusters -> security -> IP Whitelist.
_の下に私のIPアドレスをホワイトリストに追加することで解決できました。_current ip address
_をクリックする代わりに、グーグルで私のIPを検索して貼り付けてください。うまくいきますように!
私も同様の問題があり、_Clusters -> security -> IP Whitelist.
_の下に私のIPアドレスのホワイトリストを追加することで解決できました。リストにこのIPを追加しました:_0.0.0.0/0
_すべてに開かれます。
MongoDB Compassを https://cloud.mongodb.com/ クラスターに接続しているときにも、同様の問題に直面しました。
次の手順で問題を解決します。
どうやら、変化
mongoose.connect(keys.mongoURI);
に
mongoose.connect(keys.mongoURI, () => { }, { useNewUrlParser: true })
.catch(err => {
console.log(err);
});
私のために働いた。
現在のIPアドレスがMongoAtlas IPホワイトリストにあることを確認します。 VPNを更新した後、この問題に遭遇しました。
同じ問題がありましたが、IPホワイトリストが正しく設定されていました。
その理由は、MongoDB Enterprise AtlasがSSL暗号化レイヤーを使用せずに接続しようとすると、次のような非合理的で自明ではないエラーが発生するためです。
Failed to connect to mongodb-m0-nnxxx.mongodb.net:27017
No chance to Authorize
Mondodbクライアントを使用してIPホワイトリストを使用して接続しようとすると、次のようなエラーメッセージが表示されます。
mongo "mongodb+srv://mongodb-m0-nnxxx.mongodb.net/test" --username admin
DBClientConnection failed to receive message from mongodb-m0-shard-00-00-nnxxx.mongodb.net.:27017 - HostUnreachable: Connection closed by peer
Unable to reach primary for set mongodb-m0-shard-0
Cannot reach any nodes for set mongodb-m0-shard-0. Please check network connectivity and the status of the set. This has happened for 5 checks in a row.
たとえば、Robo 3Tクライアントを使用する場合、チェックボックス「SSLプロトコルを使用」を有効にする必要があり、**認証方法:自己署名証明書**
テストは診断出力を生成します:
v Connected to mongodb-m0-nnxxx.mongodb.net:27017 via SSL tunnel
v Authorized on admin database as admin
これが誰かを助けることを願っています。
気づく前にvpnに接続しました。後でdbに接続しようとすると、接続できませんでした。私は自分のロープとすべてのアクセス許可を再度開きました。その後、vpmで再度接続したところ、接続できました。
私はその問題を抱えていて、それを修正しました。以下は私が使用した手順です:
これは私のために働いたソリューションです。
同様の問題があり、mongoに接続できませんでした。どうやらmongodbは、特殊文字を含む私のパスワードが気に入らなかったようです。 URLエンコードやその他すべての種類の操作を試しましたが、最終的に問題を解決したのは、パスワードを特殊文字を使用しないパスワードに変更することだけでした。私はmongodbパスワードジェネレーターを使用し、すべて正常に動作します。