برای اینکه بتونی اپتو به مانگو دی بی بوصلی میتونی از کتابخونه هایی که توسط خود مانگو دی بی maintain میشن استفاده بکنی. داک خود مانگو بهشون driver میگه. ما هم بهشون درایور میگیم. درایور نود.جیاسی مانگو دی بی promise base هست و اسم پکیج اون mongodb هست. داکشم اینجاست.
برای متصل شدن به مانگو دی بی شما باید یه همچین چیزی داشته باشی:
mongodb://[username:password@]host1[:port1][,...hostN[:portN]][/[defaultauthdb][?options]]
حالا بیاید هر بخش رو ببینیم چیه:
این بخش (mongodb://) مشخص کننده این موضوع هست که این یه connection string هست.
بخش (username:password@) آپشنال هست. برای احراز هویت به کار میره. اگه نام کاربری و پسورد رو مشخص بکنی و بیای authSource رو هم مشخص بکنی میاد کاربر رو authenticate میکنه. ولی اگه authSource رو مشخص نکرده باشی میاد از defaultauthdb استفاده میکنه. دلیل استفاده از @ هم اینه که تو URI اومدی نام کاربری و رمز عبور رو برای احراز هویت قرار دادی. پس اگه نام کاربری و رمز عبور نخوای ارائه بدی میتونی این بخشو از توی connection string حذف کنی.
بخش host:port داره میگه به کدوم هوست و کدوم پورت اون وصل بشم (البته ارائه پورت الزامی نیست). بجای host میتونی یه hostname، آدرس IP یا UNIX domain socket بدی. راستی اینم بگم که اگه میخوای چند تا hostname مشخص بکنی باید از replica set و sharded cluster استفاده بکنی. اگرم پورت رو مشخص نکنی مقدار پیشفرضش در نظر گرفته میشه: ۲۷۰۱۷
بخش defaultauthdb مشخص کننده دیتابیسی هست که برای authentication استفاده میشه. وقتی این بخش رو مشخص کردی که authSource رو مشخص نکردی. اگرم هر دو بخش رو نذاری میاد توی ادمینا دنبال اون کاربر و رمز عبورش میگرده.
بخش query string از دو قسمت تشکیل شده name (وقتی از درایور استفاده میکنی case insensitive هست) و value (در همه شرایط case sensitive هست).
require('mongoose').connect(process.env.MONGODB_URI, { useCreateIndex: true, useNewUrlParser: true, useUnifiedTopology: true }); // database won't create until you insert the first document in it