نود.جی.اس قهرمان – آموزش دیتابیس Node.js

نود.جی.اس قهرمان – آموزش دیتابیس Node.js

این پنجمین پست از سری آموزش Node Hero است – در این فصل ها یاد خواهید گرفت چطور از Node.js استفاده کنید و چطور با استفاده از آن محصولات نرم افزاری توسعه دهید.

در ادامه نشان خواهم داد که چطور برنامه Node.js خود را همراه با یک دیتابیس راه اندازی کنید و اصول اولیه استفاده از آن آموزش داده می شود.

فصل های گذشته و آینده:

  1. شروع کار بار Node.js
  2. استفاده از NPM
  3. درک مفهوم برنامه نویسی async 
  4. ساخت اولین سرور Node.js 
  5. دسترسی به دادهای درون دیتابیس [در حال خواندن آن هستید]
  6. برقراری ارتباط با API
  7. سازماندهی ساختاری پروژه
  8. احراز هویت کاربران
  9. تست نرم افزار Node.js
  10. اشکال زدایی Node.js
  11. امنیت برنامه
  12. انتقال برنامه Node.js به Host اشتراکی
  13. نظارت بر روی برنامه Node.js

ذخیره داده ها در متغیر سراسری

نمایش صفحات استاتیک به کاربران – همانطور که در فصل قبل مشاهده کردید – می تواند برای صفحات و یا بلاگ های شخصی مناسب باشد. با این حال اگر می خواهید محتوای ارسال شده را شخصی سازی کنید باید داده ها را در جایی ذخیره کنید.

اجازه دهید یک مثال ساده را ببینیم (ثبت نام کاربر). شما می توانید محتوای سفارشی را مناسب با کاربر بازیابی کنید یا اینکه بعد از هر احراز هویت کاربر داده ها را در دسترس آنها قرار دهید.

اگر کاربری بخواهد در برنامه شما ثبت نام کند، شاید بخواهید مسیری (route) برای انجام این کار تعریف کنید:

با این روش می توان کاربران را در یک متغیر سراسری ذخیره کید و تا وقتی که برنامه در حال اجرا است در حافظه قرار دارند.

به دلایلی این روش شاید مشکل ساز باشد:

  • گران بودن رم
  • حافظه با هر بار اجرا مجدد ریست می شود
  • اگر حافظه را تمیز نگاه ندارید بعضی اوقات باعث overflow می شود

ذخیره داده ها در فایل

روش دیگری که شاید به ذهنتان خطور کند، ذخیره داده ها در یک فایل است.

اگر ما داد های کاربر را به طور دائم در سیستم ذخیره کنیم می توانیم از مشکلاتی که قبلا ذکر شد خلاص شویم.

این روش بصورت مثال زیر خواهد بود:

با این روش دیگری داده های کاربر را از دست نمی دهیم حتی بعد از ریست سرور. این راه حل نسبت به خرید RAM بسیار ارزان و مقرون به صرفه است.

متاسفانه باید بگوییم که ذخیره داد ها از این راه هنوز دارای نواقصی است:

  • در اضافه کردن مشکلی نخواهید داشت اما حذف و بروزرسانی را نیز در نظر بگیرید.
  • اگر بخواهیم با فایل ها کار کنیم، هیچ راه آسانی برای دسترسی بصورت موازی نخواهیم داشت (اجازه نوشتن را نخواهید داشت).
  • وقتی بخواهیم مقیاس برنامه را گسترش دهیم، نمی توانیم فایل ها را در بین سرورها تقسیم کنیم (می توانیم اما این موضوع در این آموزش پوشش داده نمی شود).

اینجاست که دیتابیس های واقعی وارد بازی می شوند.

شاید شنیده باشید که دو نوع اصلی دیتابیس وجود دارد: SQL و NoSQL.

SQL

اجازه دهید با SQL شروع کنیم. یک زبان پرس و جو که برای کار با دیتابس رابطه ای طراحی شده است. SQL چند نوع است و بستگی به چیزی که استفاده می کنید دارد اما اساس کار آن یکی است.

داده ها خود در جدول‌ها ذخیره می شوند، و هر بخش وارد شده در قالب یک سطر در جدول نمایش داده می شود، درست مثل Google Sheets یا Microsoft Excel.

در یک دیتابیس SQL می توانید طرح (schema) خود را تعریف کنید – این طرح، اسکلت داده هایی که در آن وارد می شود را مشخص می کند. نوع داده‌ها قبل از اینکه در آن ذخیره شود باید تعریف شود. به عنوان مثال، باید یک جدول برای داده‌های کاربر ایجاد کنید و برای دیتابیس مشخص کنید که این نام کاربری یک رشته است و سن از نوع عدد صحیح است.

 

NoSQL

از سوی دیگر دیتابیس NoSQL به یکی از محبوبترین ها در دهه گذشته تبدیل شده است. با NoSQL شما نیازی ندارید که schema تعریف کنید، می توانید هر JSON دلخواهی را ذخیره کنید.  این روش در جاوا اسکریپت بسیار رایج است و می توانیم هر نوع شی‌ای را به سادگی به JSON تبدیل کنیم. اما مراقب باشد چون نمی توانید تضمین کنید چه داده هایی وارد می شوند و همچنین از داده های درون دیتابیس خبر ندارید.

Node.js و MongoDB

یک تصور غلط هنگام کار با Node.js وجود دارد که تمام مدت درباره آن میشنویم:

Node.js تنها می تواند درکنار MongoDB استفاده شود (که یکی از محبوبترین دیتابیس‌های NoSQL است).

با توجه به تجربه من، این یک تصور غلط است. درایورهای بسیاری برای بسیاری از دیتابیس‌ها وجود دارد که همچنین می توانید کتابخانه‌های آن را در NPM پیدا کنید. به نظر من، آسانترین و ساده ترین آنها MongoDB است.

 

Node.js و PostgreSQL

در این مثال از SQL به خاطر سادگی استفاده می کنیم. انتخاب من PostgreSQL است.

برای استفاده از PostgreSQL می بایست آن را نصب و راه انداری کنید. اگر از Mac استفاده می کنید می توانید از homebrew برای نصب PostgreSQL استفاده کنید. در غیر این صورت اگر از linux استفاده می کنید می توانید از پکیج منیجر خود برای نصب استفاده کنید.

آموزش node.js

برای کسب اطلاعات بیشتر این مقاله عالی برای راه اندازی اولین دیتابیس خود مطالعه کنید. اگر قصد دارید از ابزارهایی برای نمایش دیتابیس استفاده کنید، پیشنهاد من استفاده از خط فرمان برنامه است که psql نامیده می شود – این ابزار در هنگام نصب سرور PostgreSQL نصب می شود. در اینجا برای شروع، برگه تقلب را می توانید مطالعه کنید.

اگر نمی خواهید از خط فرمان استفاده کنید، می توانید از pgAdmin که یک ابزار منبع باز GUI برای مدیریت PostgreSQL استفاده استفاده کنید.

توجه داشته باشید SQL به خودی خود یک زبان است و ما نمی خواهیم تمام ویژگی های آن را پوشش دهیم، فقط آنهایی که ساده است را مورد بحث قرار می دهیم. برای یادگیری بیشتر آموزش های بسیاری در وب وجود دارد که می توان از آنها استفاده کرد.

 

تعامل با دیتابیس از طریق Node.js

ابتدا می خواهیم دیتابیسی را ایجاد کنیم. برای این کار دستور زیر را در ترمینال خود وارد کنید:

آنگاه جدولی را برای کاربران خود ایجاد می کنیم:

در آخر می توانیم به اسکریپت نویسی خود برگردیم. در زیر نمایش داده شده است که چطور از طریق برنامه Node.js به پایگاه داده متصل شویم:

این تنها یک مثال ساده است hello world در PostgreSQL است. توجه داشته باشید که اولین پارامتر یک رشته است که دستور SQL ما است. دومین پارامتر، آرایه ای از مقادیر است که می خواهیم کوئری ها را پارامتری‌ بندی کنیم.

یک مشکل بزرگ در امنیت، هنگام وارد کردن ورودی کاربر در دیتابیس وجود دارد. این باعث می شود از حملات تزریق SQL که یک نوع حمله ای است که هکر سعی می کند کوئری SQL را به دست آورد. همیشه وقتی می خواهید برنامه ای را درست کنید که کاربر با آن سر و کار دارد این موضوع را به خاطر داشته باشید. برای اطلاعات بیشتر Node.js Application Security checklist را مطالعه کنید.

اجازه دهید مقال قبلی را ادامه دهیم:

حال کاربر با موفقیت در دیتابیس ذخیره شد. حال اجازه دهید آن را بازیابی کنیم. در ادامه آدرس جدیدی را به برنامه اضافه می کنیم تا کاربر را بازیابی کنیم.

زیاد هم دشوار نبود نه؟!

حال می توانید انواع مختلقی از کوئری های SQL را در برنامه Node.js اجرا کنید.

با این تکنیک شما قادر خواهید بود که داده ها را مداوم در برنامه خود ذخیره کنید و این کار را مدیون کار سخت تیم ماژول node-postgres هستیم.

ما با تمام اصول اولیه ای که برای کار با دیتابیس در Node.js را لازم داشتیم آشنا شدیم. حال بروید و یک پروژه کوچک را برای خود درست کنید.

سعی کنید همه چیز را تست کنید، چون تمرین باعث می شود که به یک قهرمان واقعی Node تبدیل شوید!

اگر هر سوالی در مورد این آموزش یا چگونگی استفاده از دیتابیس با Node.js دارید، از پرسیدن آن دریغ نکنید!


  • kian

    مرسی از ادامه آموزش
    من mysql رو به خاطر اینکه باهاش کار میکردم،ترجیح میدم…
    امیدوارم ادامه آموزش رو به زودی ببینیم…