القراء مثلك يساعدون في دعم MUO. عند إجراء عملية شراء باستخدام الروابط الموجودة على موقعنا ، فقد نربح عمولة تابعة. اقرأ أكثر.

Sequelize هو مخطط ربط كائن Node.js (ORM) يوفر واجهة برمجة تطبيقات سهلة الاستخدام لقواعد البيانات العلائقية مثل Oracle و PostgreSQL و MySQL و MariaDB و SQLite والمزيد.

PostgreSQL هو نظام مفتوح المصدر لإدارة قواعد البيانات الارتباطية (RDBMS) يشتهر بميزاته الشاملة وأمانه الممتاز وقابليته للتوسع.

تتوافق PostgreSQL مع لغات برمجة متعددة ، بما في ذلك JavaScript ، مما يجعلها خيارًا مثاليًا للويب والتطبيقات التي تعتمد على البيانات. هنا سوف تتعلم كيفية إعداد قاعدة بيانات Postgres في Node.js باستخدام Sequelize.

الخطوة 1: تثبيت التبعيات

قبل أن تتمكن من استخدام PostgreSQL ، تحتاج إلى تثبيته على نظامك. لتنزيل PostgreSQL ، انتقل إلى ملف موقع PostgreSQL واختر نظام التشغيل الخاص بك. إذا واجهت مشكلات أثناء هذه العملية على macOS ، فتحقق من ذلك تثبيت PostgreSQL على macOS.

بدلاً من ذلك ، يمكنك استخدام PostgreSQL على السحابة من خلال الاستفادة من الأنظمة الأساسية مثل الفيل التي تقدم PostgreSQL كخدمة.

instagram viewer

بعد ذلك ، قم بتثبيت تتمة عن طريق تشغيل الأمر التالي:

npm تثبيت تتمة

بعد ذلك ، ثبّت برنامج تشغيل قاعدة بيانات PostgreSQL عن طريق تشغيل الأمر أدناه:

npm تثبيت pg pg-hstore

الخطوة 2: الاتصال بقاعدة بيانات PostgreSQL

في دليل مصدر مشروعك ، أنشئ ملف التكوين مجلد. في ال التكوين مجلد ، قم بإنشاء ملف db.js ملف. سيحتوي هذا الملف على جميع التعليمات البرمجية التي تربط تطبيق Node.js بقاعدة بيانات PostgreSQL.

بعد ذلك ، في ملف db.js ملف استيراد تكملة من تتمة.

مقدار ثابت {تكملة} = يتطلب("تكملة");

بعد ذلك ، تحتاج إلى إنشاء ملف تكملة مثال. يأخذ هذا المثيل معلمات الاتصال مثل اسم قاعدة البيانات واسم المستخدم وكلمة المرور كوسائط. بدلاً من ذلك ، فإنه يأخذ URI اتصال واحد كوسيطة.

على سبيل المثال:

// معلمات الاتصال
مقدار ثابت تتمة = جديد تكملة ('قاعدة البيانات', 'اسم المستخدم', 'كلمة المرور')

// مع URI
مقدار ثابت تتمة = جديد تكملة (process.env. POSTGRESQL_DB_URI)

بالإضافة إلى ذلك ، يأخذ هذا المُنشئ كائن التكوين كوسيطة اختيارية.

بعد ذلك ، اختبر اتصالك التسلسلي عن طريق إضافة الكود الموجود أسفل ملف db.js ملف:

مقدار ثابت testDbConnection = غير متزامن () => {
يحاول {
انتظر تتمة. المصادقة () ؛
وحدة التحكم.سجل("تم الاتصال بنجاح.");
} يمسك (خطأ) {
وحدة التحكم.خطأ("غير قادر على الاتصال بقاعدة البيانات:"، خطأ)؛
}
};

تستدعي كتلة التعليمات البرمجية أعلاه ملف تتمة.مصادقة () طريقة لاختبار ما إذا كان الاتصال على ما يرام ويطبع "تم إنشاء الاتصال بنجاح." للتعزية إذا كان كذلك. إذا كان هناك خطأ في الاتصال ، فإنه يطبع "تعذر الاتصال بقاعدة البيانات:" مع الخطأ.

أخيرًا ، قم بتصدير مثيل التتمة و testDbConnection وظيفة.

وحدة.exports = { قدم مربع: تكملة ، testDbConnection} ؛

الخطوة 3: إنشاء نموذج لاحق

في دليل مصدر مشروعك ، أنشئ ملف عارضات ازياء مجلد. سيحتوي هذا المجلد على جميع نماذجك اللاحقة. بعد ذلك ، قم بإنشاء ملف نموذج. يجب أن يوفر الاسم الذي تقدمه للملف معلومات حول تمثيل النموذج.

في ملف النموذج الخاص بك ، قم باستيراد مثيل التسلسل.

// example.js
مقدار ثابت {sq} = يتطلب("../config/db");

بعد ذلك ، قم بالاستيراد أنواع البيانات من تتمة.

مقدار ثابت {أنواع البيانات} = يتطلب("تكملة");

أنواع البيانات يتيح لك تعيين نوع البيانات المطلوب لكل خاصية في النموذج الخاص بك.

يمكنك إنشاء نموذج تتابع جديد يمثل جدولًا في قاعدة البيانات الخاصة بك عن طريق استدعاء يُعرِّف طريقة على مثيل التكملة الخاص بك.

ال يُعرِّف تأخذ الطريقة وسيطتين: اسم النموذج وكائن السمات. يمثل اسم النموذج اسم النموذج. يمثل كائن السمات أعمدة قاعدة البيانات ، حيث تمثل كل خاصية عمودًا.

فيما يلي مثال على نموذج تكملة:

مقدار ثابت المستخدم = sq.define ("مستخدم", {
بريد إلكتروني: {
النوع: أنواع البيانات. خيط،
allowNull: خطأ شنيع,
المفتاح الأساسي: حقيقي,
},

الاسم الكامل: {
النوع: أنواع البيانات. خيط،
},

عمر: {
النوع: أنواع البيانات. عدد صحيح،
},

موظف: {
النوع: أنواع البيانات. بوليان ،
القيمة الافتراضية: خطأ شنيع,
},
});

تحدد كتلة التعليمات البرمجية أعلاه أ مستخدم نموذج بامتداد بريد إلكتروني, الاسم الكامل, عمر، و يعمل ملكيات.

ال بريد إلكتروني الخاصية هي نوع سلسلة لا يمكن أن تكون فارغة (allowNull: خطأ) ويعمل أيضًا كمفتاح أساسي لملف مستخدم طاولة (مفتاح أساسي: صحيح). ال الاسم الكامل و ال عمر الخاصية هي سلسلة (أنواع البيانات. خيط) ونوع عدد صحيح (أنواع البيانات. عدد صحيح)، على التوالى. ال يعمل الخاصية هي نوع منطقي بقيمة افتراضية خطأ شنيع، مما يعني أنه إذا لم يتم تحديده ، فسيتم تعيينه تلقائيًا على خطأ في قاعدة البيانات.

بعد ذلك ، اتصل بـ تزامن الطريقة على النموذج الخاص بك. تأخذ هذه الطريقة كائن التكوين كوسيطة. بناءً على الخيارات الموجودة في كائن التكوين ، فإن ملف تزامن الطريقة يمكن:

  • User.sync (): أنشئ الجدول إذا لم يكن موجودًا ولا يفعل شيئًا إذا كان موجودًا.
  • User.sync ({force: true}): قم بإنشاء الجدول وإسقاط الأول إذا كان موجودًا بالفعل.
  • User.sync ({alter: true}): تحقق من الحالة الحالية للجدول في قاعدة البيانات وقم بإجراء التغييرات الضرورية في الجدول لجعله يطابق النموذج.

على سبيل المثال:

User.sync (). ثم (() => {
وحدة التحكم.سجل("تمت مزامنة نموذج المستخدم");
});

يُنشئ مقطع التعليمات البرمجية أعلاه جدول قاعدة البيانات لـ مستخدم النموذج إذا لم يكن موجودًا ولا يفعل شيئًا إذا كان موجودًا.

أخيرًا ، قم بتصدير النموذج الخاص بك:

وحدة.exports = المستخدم ؛

الاستعلام عن قاعدة بيانات PostgreSQL

يوفر Sequelize طرقًا مختلفة تسمح لك بالتفاعل مع قاعدة بيانات PostgreSQL دون كتابة خام أوامر SQL.

حفظ البيانات في PostgreSQL

لحفظ البيانات في قاعدة بيانات PostgreSQL ، اتصل بامتداد يخلق طريقة على النموذج الخاص بك وتمرير كائن يطبق نموذج PostgreSQL كوسيطة.

على سبيل المثال:

مقدار ثابت mike = User.create ({
بريد إلكتروني: "[email protected]",
الاسم الكامل: "مايك سميث",
عمر: 30,
موظف: حقيقي,
});

كتلة التعليمات البرمجية أعلاه تنشئ ملف مستخدم حالة مايك في قاعدة البيانات الخاصة بك ويقوم تلقائيًا بإنشاء معرف فريد.

استرداد البيانات من PostgreSQL

يمكن استرداد البيانات بعدة طرق من قاعدة بيانات PostgreSQL باستخدام التسلسل ، لكن ذلك يعتمد على طبيعة البيانات التي تريد تلقيها.

أكثر الطرق شيوعًا لاسترداد البيانات هي findOne و جد كل طُرق. ال جد كل يعرض جميع مثيلات البيانات التي تلبي استعلامًا معينًا ، بينما findOne إرجاع المثيل الأول الذي يلبي الاستعلام.

على سبيل المثال:

// البحث عن جميع المستخدمين
مقدار ثابت المستخدمون = انتظر User.findAll () ،

سيعيد الرمز أعلاه جميع ملفات مستخدم مثيلات في قاعدة البيانات.

يمكنك التصفية من خلال البيانات التي تم إرجاعها باستخدام ملف أين إفادة. تسمح لك هذه العبارة بإضافة شروط معينة إلى الاستعلام. سيعود طلب البحث الخاص بك فقط الحالات التي تفي بهذه الشروط.

على سبيل المثال:

User.findAll ({
أين: {
موظف: خطأ شنيع
}
});

سيعيد الرمز أعلاه جميع ملفات مستخدم حالات مع يعمل تعيين الخاصية على خطأ شنيع في قاعدة البيانات.

تحديث البيانات على PostgreSQL

يمكنك تحديث البيانات على قاعدة بيانات PostgreSQL عن طريق استدعاء تحديث الطريقة وتمرير عامل التصفية كوسيطة.

على سبيل المثال:

انتظر User.update ({ يعمل: حقيقي }, {
أين: {
موظف: خطأ شنيع
}
});

يغير الكود أعلاه جميع ملفات مستخدم حالات بامتداد يعمل قيمة ال خطأ شنيع ل حقيقي.

بدلاً من ذلك ، يمكنك تحديث البيانات عن طريق تعديل الخصائص التي تريد تغييرها يدويًا واستدعاء ملف يحفظ طريقة على سبيل المثال.

على سبيل المثال:

مقدار ثابت userMike = انتظر User.findOne ({ أين: { بريد إلكتروني: "[email protected]" } });

لو(userMike! == باطل) {
userMike.email = "[email protected]"
انتظر userMike.save ()
}

يستعلم الرمز أعلاه عن قاعدة البيانات لمستخدم لديه البريد الإلكتروني "[email protected]" باستخدام findOne طريقة. إذا تم العثور على المستخدم ، فإنه يعيد تعيين خاصية البريد الإلكتروني إلى "[email protected]" ويستدعي يحفظ طريقة لتحديث قاعدة البيانات.

حذف البيانات على PostgreSQL

يمكنك حذف البيانات على PostgreSQL عن طريق استدعاء هدم الطريقة وتمرير عامل التصفية كوسيطة.

على سبيل المثال:

انتظر User.destroy ({
أين: {
بريد إلكتروني: "[email protected]"
}
});

يستعلم الرمز أعلاه عن قاعدة البيانات لمستخدم لديه البريد الإلكتروني "[email protected]" ويحذف المستخدم من قاعدة البيانات.

فوائد استخدام PostgreSQL مع Sequlize

يمكن أن تكون كتابة استعلامات SQL الأولية للتفاعل مع قاعدة بيانات PostgreSQL أمرًا شاقًا. باستخدام Sequelize ، يمكنك بسهولة تحديد النماذج وإنشاء ارتباطات بينها والاستعلام عن قاعدة البيانات باستخدام واجهة برمجة تطبيقات بسيطة وسهلة الاستخدام. بدلاً من ذلك ، يمكنك استخدام ORMs الأخرى ، مثل TypeORM ، للتفاعل مع قاعدة بيانات PostgreSQL دون عناء كتابة استعلامات SQL الأولية.