質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
MongoDB

MongoDBはオープンソースのドキュメント指向データベースの1つです。高性能で、多くのリトルエンディアンシステムを利用することができます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Q&A

1回答

2272閲覧

MongoDBとNode.JSの接続ができない

ryohei_okazaki

総合スコア0

MongoDB

MongoDBはオープンソースのドキュメント指向データベースの1つです。高性能で、多くのリトルエンディアンシステムを利用することができます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

0グッド

0クリップ

投稿2023/01/03 06:54

編集2023/02/02 11:44

前提

MongoDBを初めて触るものです。

YouTubeを見ながら、Node.jsとMongoDBを接続させて簡単なAPIを作成しています。
https://youtu.be/JBCykXLfvv0

Node.jsは接続できているものの、MongoDBが接続できない状態です。
ドキュメントを読んで実行してみても、以下のエラーが出力されてしまう状態です。

コード

実現したいこと

・MongoDBとNode.jsの接続

発生している問題・エラーメッセージ

[nodemon] restarting due to changes... [nodemon] starting node server.js(node:50620) [MONGOOSE] DeprecationWarning: Mongoose: thestrictQueryoption will be switched back tofalseby default in Mongoose 7. Usemongoose.set('strictQuery', false);if you want to prepare for this change. Or usemongoose.set('strictQuery', true);to suppress this warning. (Usenode --trace-deprecation ...` to show where the warning was created)
サーバーが起動しました
node:internal/errors:484
ErrorCaptureStackTrace(err);
^

Error: querySrv EREFUSED _mongodb._tcp.cluster0.r9kvdi2.mongodb.net
at QueryReqWrap.onresolve [as oncomplete] (node:internal/dns/promises:251:17) {
errno: undefined,
code: 'EREFUSED',
syscall: 'querySrv',
hostname: '_mongodb._tcp.cluster0.r9kvdi2.mongodb.net'
}

Node.js v18.12.1
[nodemon] app crashed - waiting for file changes before starting... `

該当のソースコード

J Sファイル1

const express = require("express"); const app = express(); const mongoose = require("mongoose"); //データベース接続 mongoose.connect( "mongodb+srv://ユーザー名:Password@cluster0.r9kvdi2.mongodb.net/food?retryWrites=true&w=majority" ).then(() => console.log("success")); app.listen(3000, ()=>{ console.log("サーバーが起動しました"); });

JSファイル2

const mongoose = require("mongoose"); const foodSchema = new mongoose.Schema({ name: { type: String, required: true, trim: true, //空白削除 lowercase: true, }, calories: { type: Number, default: 0, validate(value){ if(value < 0) throw new Error("マイナスのカロリーは存在しません"); }, }, }) const Food = mongoose.model("Food",foodSchema); module.exports = Food;

試したこと

・公式ドキュメント通りに試した
・他の解説動画などを確認した

初心者質問で申し訳ございませんが、どなたかご教授いただけますと幸いです。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yuma.inaura

2023/01/03 08:30

コードやエラーはコードブロックで囲うと回答者が読みやすくなり、回答がつきやすくなりますよ。 Teratailであれば「コードの挿入」でバッククォート記法があらわれますので、その中にコードを記入します。 質問は後からでも編集可能です。
ryohei_okazaki

2023/01/03 08:46

ご回答いただきありがとうございます! 初投稿だったので勉強になりました。
guest

回答1

0

(node:20056) [MONGOOSE] DeprecationWarning: Mongoose: the strictQuery option will be switched back to false
by default in Mongoose 7. Use mongoose.set('strictQuery', false); if you want to prepare for this change.
Or use mongoose.set('strictQuery', true); to suppress this warning.

(Use node --trace-deprecation ... to show where the warning was created)
Error: querySrv EREFUSED _mongodb._tcp.cluster0.phdjhff.mongodb.net
at QueryReqWrap.onresolve [as oncomplete] (node:internal/dns/promises:251:17) {
errno: undefined,
code: 'EREFUSED',
syscall: 'querySrv',
hostname: '_mongodb._tcp.cluster0.phdjhff.mongodb.net'
}

こちらのエラーは、mongoose.connect()する前に、以下を設定するとよいと思います。
mongoose.set('strictQuery', true);

その後でもし以下のエラーが出る場合には、

Error: querySrv EREFUSED _mongodb._tcp.cluster0.phdjhff.mongodb.net
at QueryReqWrap.onresolve [as oncomplete] (node:internal/dns/promises:251:17) {
errno: undefined,
code: 'EREFUSED',
syscall: 'querySrv',
hostname: '_mongodb._tcp.cluster0.phdjhff.mongodb.net'
}

接続文字列をNode.js 2.2.12 or laterのものに変更してください。私が取得した時にはこんな感じでした。

投稿2023/02/02 02:44

okdsk

総合スコア2

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問