Sequelizer — mySql — nodejs
node এর সাথে sql কিভাবে ব্যাবহার করা হয় সেটা এখানে দেখবো । ORM হিশেবে এখানে আমরা sequelize, mysql2 npm লাইব্রেরি ব্যাবহার করবো ।
sequelize এর অফিসিয়াল ডকুমেন্টেশন এখানে নিচের লিঙ্কে ।
mysql, sqlite, postgres, mssql এই ডাটাবেজ গুলো ব্যাবহার করতে পারবো ।
প্রথমে নিচের এই কমান্ড দিয়ে sequelize ইন্সটল করবো ।
npm install --save sequelize
এরপর যে ডাটাবেজের সাথে কাজ করবো সেটার ডেমন ইন্সটল করবো, এটার কাজ হচ্ছে sequelize এর সাথে ঐ ডাটাবেজের binding বাইন্ডিং করা ।
# One of the following:
$ npm install --save pg pg-hstore # Postgres
$ npm install --save mysql2
$ npm install --save mariadb
$ npm install --save sqlite3
$ npm install --save tedious # Microsoft SQL Server
এই প্রজেক্টে আমরা mysql ব্যাবহার করবো তাই mysql2 প্যাকেজ ইন্সটল করবো ।
এরপর sequelize-cli ইন্সটল করবো এটার কাজ হচ্ছে মাইগ্রেসন করা , ডাটাবেজের সাথে কানেক্ট করা এবং ডাটাবেজের সাথে বিভিন্ন ধরনের ইন্টারেক্ট করা ।
npm install sequelize-cli -g
এটা ইন্সটল করার পর টার্মিনালে sequelize লিখে ইন্টার দিলে দেখা যাবে বিভিন্ন ধরনের কমান্ড আমরা ব্যাবহার করতে পারবো ।
এখন নিচের এই কমান্ডটি দিয়ে sequelize initialize করবো ।
sequelize init
এই কমান্ড দিয়ে sequelize প্রজেক্ট ইনিসিয়ালাইজ করলে ৪ টা ডিরেক্টরি দিবে ।
config
migrations
models
seeders
config ফাইলে ডাটাবেজের ইনফরমেশন গুলো দিতে হবে । এরপর models ডিরেক্টরি ডিলিট করে দিয়ে এরপর src এর আন্ডারে database এবং models নামে দুটি ডিরেক্টরি তৈরি করবো । models এর আন্ডারে bootstrap.js এবং database এর আন্ডারে connection.js নামে ফাইল তৈরি করি ।
connection.js ফাইলে কিছু কনফিগারেশন লিখবো যার মাধ্যমে sequelize এবং লোকাল ডাটাবেজ(mysql) এর যোগাযোগ ইস্টাব্লিশ করবে ।
এখন এখানে নিচের কোড গুলো লিখি ।
এরপর mysql ওপেন করে socialnetwork নামে একটা ডাটাবেজ তৈরি করি ।
CREATE DATABASE socialnetwork;
sequelize() এর প্রথমে প্যারামিটার ডাটাবেজের নাম, এরপরেরটা user এরপরেরটা password, শেষে host address. আর operatorAliases depricate হয়ে যাবে দেখে false দিয়েছি। এরপর শেষে global হিশেবে এক্সপোর্ট করেছি কারণ ডাটাবেজের এই কানেকশনটা বার বার লাগবে ।
এখন model ডিরেক্টরির আন্ডারে Tweet.js নামে একটি ফাইল তৈরি করে সেখানে নিচের কোডগুলো লিখি ।
এখন app.js ফাইল প্রজেক্টের রুট ডিরেক্টরিতে তৈরি করে নিচের কোড গুলো লিখি ।
এরপর প্রজেক্ট রান করার জন্য package.json ফাইলে নিচের লাইনটি লিখি
"scripts": {
"start": "node app.js"
}
এখন npm start
কমান্ড দিলে প্রজেক্ট রান হবে ।
এখন প্রজেক্ট রান না হলে আগে নিচের কমান্ড দিয়ে ডাটাবেজ মাইগ্রেসন করে নিবো ।
sequelize migration:create --name create_tweets_table
এই কমান্ড চালানোর পর create_tweets_table
নামে
মাইগ্রেসন ফাইল তৈরি হবে, এখানে আবার ঐ schema গুলো দিয়ে দিতে হবে ।
এই মাইগ্রেসন ফাইলে ২টা মেথড দিয়ে দিবে । একটি হচ্ছে up() আরেকটি হচ্ছে down() মেথড । up মেথডের কাজ হচ্ছে পুনরায় যখন migration করা হবে তখন কিভাবে টেবিল তৈরি হবে, আর down() এর কাজ হচ্ছে পুনরায় migration এর সময় ড্রপ করতে হবে ।
এখানে queryInterface দিয়ে বিভিন্ন ধরনের মেনিপুলেসন করা যায় । এছাড়াও এখানে আরও দুটি ফিল্ড অ্যাড করেছি createdAt, updatedAt
এখন নিচের এই কমান্ডটি চালিয়ে migrate করি ।
sequelize db:migrate
অর্থাৎ প্রথমে migration করতে হবে এরপর migrate করতে হবে ।
এখন প্রজেক্ট রান করি npm start
এই কমান্ডের মাধ্যমে ।
এখন mysql ডাটাবেজ টার্মিনাল ওপেন করে নিচে কমান্ড গুলো চালিয়ে দেখতে হবে যে টেবিল ঠিক ঠাক ভাবে তৈরি হয়েছে কিনা ।
mysql> mysql -u jahangir
mysql> use socialnetwork;
mysql> describe tweets;
এখন user এর জন্য একটি মডেল তৈরি করি models এর আন্ডারে User.js নামে ।
modle তৈরি করে এখন নিচের কমান্ডটি চালিয়ে মডেল migration করি ।
sequelize migration:create --name create_user_table
migration file তৈরি হয়ে গেলে এরপর নিচের কোড গুলো লিখি user এর migration ফাইলে ।
এখন নিচের কমান্ড চালিয়ে table undo করে নতুন করে টেবিল তৈরি করি ।
sequelize db:migrate:undo
undo এখানে শুধু আগের টা করেছি আমরা চাইলে আগে যতগুলো করেছিলাম সবগুলোই undo করতে পারবো ।
এরপর undo হয়ে গেলে নিচের কমান্ড চালিয়ে নতুন করে migrate করে টেবিল তৈরি করি ।
sequelize db:migrate
এখন mysql এ গেলে টেবিল গুলো দেখতে পারবো ।
এখন ডাটাবেজে ডাটা ইন্সারট, ডাটা আনার জন্য এবং টেবিল গুলোর মধ্যে রিলেশন ইস্টাব্লিশ করার জন্য নিচের কোড গুলো লিখি ।