2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

mongoDBに接続するとき、パスワードに記号を使っているとき注意すること

Posted at

先に結論

パスワード等に記号を使うときは、必要に応じてエンコードするのを忘れない。

簡単な経緯

Full Stack Vue.js, Express & MongoDB [1] - Express API
↑の動画を観ながら、node.js, express, mongoDB, vueを使ってアプリを作ろうとしていた。
動画ではmLab.comを使用していたが、2019年2月以降新規の会員登録を停止している旨が書いてあったので、今回はmongoDB Atlasを使うことにした。

エラー発生

mongoDBに接続しようとしたら以下のようなエラーがでた
UnhandledPromiseRejectionWarning: MongoParseError: URI does not have hostname, domain name and tld

原因

パスワードに記号を含めていたが、その文字をエンコードしていなかったため、エラーがでたようだ。

対策

記号をASCII Codes Tableをもとにエンコードしたら解決できた。

const uri = "mongodb+srv://<ID>:<password>@mongoDBのURI";

ここの<password>欄に

p@ssw0rd'9'!

と入れたいなら、

p%40ssw0rd%279%27%21

とエンコードしてあげないといけない。

参考

Special characters in connection string password

雑感

たぶんID, PASSWORDを他の変数にいれて、エンコードしたうえでDBのURIを作成とかするほうがいいのかなと思った。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?