هذا العنوان نفسه هو اقتراح ، لأنه افتراضيًا ، تتم مشاركة كل وحدة في تطبيق Node.js مع نفس اتصال قاعدة البيانات. ولكن إذا كان الموقف خطأ ، فقد يكون قبيحًا وقد يخطئ.
يمكنك تجاهل الجزء التالي والوصول إلى هذه النقطة.
خلفية
في الآونة الأخيرة ، أقوم بتصميم الدورات المهنية ، والعنوان هو "نظام إدارة حجز التذاكر الجوي". الشرط بسيط نسبيًا ، لذلك حاولت استخدام Node.js الذي كنت أتعلمه مؤخرًا. كنت أتحقق أيضًا من نوع إطار Node.js أكثر ملاءمة. بعد قراءة بعض الأطر ، وجدت أن هذا قاتل. إذا كان لديك وقت لقراءة المستندات ومعلومات البحث ، فمن الأفضل كتابتها مباشرة. أخيرًا ، بعد الكتابة ، سأضع الرمز على Github. الجميع مرحب بهم لانتقاد وتصحيح لي.
فيما يتعلق بقاعدة البيانات ، اعتقدت أنني كنت أكثر دراية بـ JSON وأحببتها (أعترف بذلك إذا لم أتعلم SQL جيدًا -_-#) ، لذلك اخترت mongodb. تعتبر Node + Mongo مزيجًا متزايدًا للواجهة الخلفية في السنوات الأخيرة ، وهناك الكثير من المعلومات حول كيفية استخدامها معًا على الإنترنت. ولكن من أجل توفير الوقت (تصميم الدورة التدريبية أكثر من أسبوع فقط) ، والتركيز بشكل أكبر على النظام والمنطق ، استخدمت mongoose ، ملحق node.js يستخدم خصيصًا لنمذجة بيانات mongoDB ، لتقليل الكود الذي يدير قاعدة البيانات بشكل كبير.
الموضوع الرئيسي
لقد أنشأت نموذجين للبيانات ، أحدهما هو المستخدم (المستخدم) والآخر هو الرحلة (الرحلة) ، والتي يتم تغليفها في الوحدات (الوحدات النمطية) من user.js ، flight.js. النموذج مسؤول على وجه التحديد عن التفاعل مع قاعدة البيانات. تحتاج كل من وحدات المستخدم والطيران إلى الاتصال بقاعدة البيانات. في البداية ، كان الكود الخاص بي على النحو التالي:
// ------ user.js ------- // تتطلب mongoose.js المرجع mongoose.jsvar m = require ('mongoose') ؛ // connect to database connect to database m.connect ('mongodb: // localhost/test') ؛ تتطلب ('mongoose') ؛ // الاتصال بقاعدة البيانات الاتصال بقاعدة البيانات m.connect ('mongodb: // localhost/test') ؛ // ... بعض الكود الآخر ... // ------ models.js ----- var user = require ('./ user') ، flight = require ('./ flight') ؛ناهيك عن أن طريقة الكتابة هذه ليست جافة على الإطلاق ، هذه الطريقة نفسها خاطئة. عندما أقوم بتشغيل index.js ، أحصل على الخطأ التالي.
> node index.js> خطأ في الاتصال: {[خطأ: محاولة فتح اتصال غير موضح.] الحالة: 2}الخطأ هو: حاول فتح اتصال غير مُعد.
لذلك يجب علينا الاتصال بقاعدة البيانات مرة واحدة في مكان واحد ، ثم الوحدات الأخرى التي تحتاج إلى الاتصال بقاعدة البيانات تتفاعل مع قاعدة البيانات من خلال هذه الوحدة. كان مثل لوحة الأسلاك ، وصرخ دون تردد: "لا يوجد سوى مأخذ توصيل واحد على الحائط ، لا تسرقها! دعني أذهب! أنت ... هذا جيد!"
خطة محددة
نضع إجراء الاتصال بقاعدة البيانات في وحدة نمطية وفضح الاتصال بالوحدات النمطية الأخرى في التطبيق بأكمله ، ومن ثم يمكن للوحدات الأخرى التي تحتاج إلى الاتصال بقاعدة البيانات أن تشير إلى هذا الاتصال.
// ----- database.js ----- var m = require ('mongoose') ؛ m.connect ('mongodb: // localhost/test') ؛ // المرجع إلى اتصال قاعدة البيانات إنشاء مرجعية لهذا الاتصال var db = m.connection ؛ ----- user.js ----- flight.js مماثلة -----/... بعض التعليمات البرمجية الأخرى ...//سنقوم بتمرير مرجع اتصال قاعدة البيانات كمعلمة في models.js module.exports = function (db) {if (db) {// ... افعل الأشياء مع الاتصال ... إذا كنت تتصل بـ Database ، يمكنك تنفيذ عمليات البيانات المرتبطة}}}}}}. استرجاع المرجع إلى اتصال قاعدة البيانات ، يرجى الرجوع إلى اتصال قاعدة البيانات var db = require ('./ database') ؛ // تمرير المرجع إلى اتصال قاعدة البيانات في الوحدة التي تحتاج إلى الاتصال بقاعدة البيانات ، ويتم الانتهاء من المهمة! var user = require ('./ user') (dB) ، flight = require ('./ flight') (dB) ؛هذه طريقة واحدة للحصول على وحدات متعددة من تطبيق Node.js لمشاركة اتصالات قاعدة البيانات. رأيته على stackoverflow. إذا كان لديك طريقة أفضل ، فيرجى مشاركتها معك في التعليقات!