اذهب إلى المحتوى

السؤال

نشر

أتفهم الأمر في Laravel لكن عندما تعاملت مع Node.js ورد أمامي ذلك المصطلح لكن لم أتفهمه بشكل كامل، هل يمكنكم توضيح ذلك بأمثلة وكيف يتم الأمر بشكل مفصل لو سمحتم؟

أي ما الفائدة من ذلك؟ وهل يتم ذلك مع MongdoDB فقط أم يمكن مع PostgreSQL وMySQL؟

 

Recommended Posts

  • 0
نشر

السلام عليكم ,

فكرة Migrations في Node.js، خاصةً مع Sequelize، تشبه إلى حد كبير ما تقوم به في Laravel.

فكرة الMigration:

Migrations هي عمليات تغيير في هيكل قاعدة البيانات. عندما تقوم بتطوير تطبيقك، قد تحتاج إلى إجراء تغييرات في هيكل الجداول في قاعدة البيانات، مثل إضافة حقل جديد، أو حذف حقل، أو تعديل نوع البيانات، وما إلى ذلك.

في Laravel:

لنفترض أن لديك جدول users في Laravel وتحتاج إلى إضافة حقل جديد لتخزين العناوين. تقوم بكتابة Migration لتنفيذ هذا التغيير. قد يكون المثال كالتالي:
 

php artisan make:migration add_address_to_users_table
public function up()
{
    Schema::table('users', function (Blueprint $table) {
        $table->string('address');
    });
}

public function down()
{
    Schema::table('users', function (Blueprint $table) {
        $table->dropColumn('address');
    });
}

ثم تقوم بتنفيذ:
 

php artisan migrate

و يمكن التنفيذ أيضا في mongoDb على النحو التالي 
 

const mongoose = require('mongoose');

mongoose.connect('mongodb://localhost:27017/your_database', { useNewUrlParser: true, useUnifiedTopology: true });

const userSchema = new mongoose.Schema({
  // Existing schema fields
  name: String,
  email: String,
});

// Adding a new field
userSchema.add({ address: String });

const User = mongoose.model('User', userSchema);

// Sample migration script
async function runMigration() {
  await User.updateMany({}, { $set: { address: null } });
  mongoose.connection.close();
}

runMigration();

و يمكن التنفيذ مع mySql و PostgreSQL 
عبر Sequelize ORM على النحو التالي :
 

'use strict';

module.exports = {
  up: async (queryInterface, Sequelize) => {
    await queryInterface.addColumn('Users', 'address', {
      type: Sequelize.STRING,
      allowNull: true,
    });
  },

  down: async (queryInterface, Sequelize) => {
    await queryInterface.removeColumn('Users', 'address');
  },
};

و التنفيذ :
 

npx sequelize-cli db:migrate

 

  • 0
نشر

مفهوم ال database migrations قائم على التحكم باصدار قواعد البيانات وادارتها على مدار الزمن، مما يقدم فائدة كبرى عند تطور التقنية او تحسينها مع الوقت.

يتم تطبيق هذا المفوم مع قواعد البيانات العلائقية، مثل PostgreSQL و MYSQL، وذلك باستخدام المكاتب الشهيرة المختصة في هذا الأمر، مثل Knex.js و Sequelize.

أما قواعد البيانات الغير علائقية مثل MongoDB، فتطبيق هذا المفهوم غير شائع لمرونتها لوجود مفاهيم ال models وال schemas التي تقدمها Object-Document Mapper (ODM) مثل المكتبة الشهيرة mongoose.

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...