وحدة قاعدة بيانات
جزء من قسم قواعد البيانات باستخدام MongoDB في رحلة Node.js على Coddy. الدرس 15 من 18.
يصبح من الصعب قراءة ملف واحد يفتح قاعدة البيانات ويحتوي على كل المسارات، كما أن أي ملف ثانٍ يحتاج إلى books سيضطر إلى الاتصال مجددًا.
انقل الاتصال إلى وحدة مستقلة. يُنفَّذ الرمز في المستوى الأعلى من الوحدة مرة واحدة، في المرة الأولى التي يستورد فيها أي ملف هذه الوحدة، وتحصل كل عملية استيراد لاحقة على الصادرات نفسها. لذا يُنفَّذ العميل والفهرس وملف التهيئة مرة واحدة، مهما بلغ عدد الملفات التي تستورد المجموعات. يعمل await في المستوى الأعلى ضمن الوحدة، وينتظر الملف المستورِد حتى ينتهي تنفيذه.
// store.js
import { MongoClient } from 'mongodb';
const client = new MongoClient('mongodb://localhost:27017');
export const orders = client.db('shop').collection('orders');
await orders.createIndex({ number: 1 }, { unique: true });// server.js
import { orders } from './store.js';التحدي
سهل- يستورد
server.jsالآنbooksوratingsمن./db.js، لذا لا يمكنه العمل بعد. - في
db.js، أنشئ العميل، وصدّر مجموعتي البيانات، وأنشئ فهرس ISBN، وأضف الكتب والمؤلفين إلى قاعدة البيانات.
اضغط على تشغيل: ستستجيب كل المسارات كما في السابق. أرسل GET /books مرتين: سيظل عدد الكتب ثلاثة.
جرّب بنفسك
import { MongoClient } from 'mongodb';
import { authorList } from './authors.js';
const bookList = [
{ title: 'Dune', author: 'Frank Herbert', year: 1965, isbn: '9780441013593', genre: 'scifi' },
{ title: 'Kindred', author: 'Octavia E. Butler', year: 1979, isbn: '9780807083697', genre: 'scifi' },
{ title: 'Emma', author: 'Jane Austen', year: 1815, isbn: '9780141439587', genre: 'classic' },
];
// أنشئ العميل هنا، وصدّر مجموعتَي books وratings،
// وأنشئ فهرس ISBN، وأضف البيانات الأولية من bookList وauthorList.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.