احتمالا براتون پیش اومده که ایده ای قوی داشته باشید و برای پیاده سازیش به اپلیکیشن نیاز داشته باشید. برای ساختن و توسعه یک برنامه ایده آل باید به قابلیت نگهداری آن، ارتقاء پذیری و بهبود عملکرد کلی با استفاده از تکنولوژی های جدید به مرور زمان نیز فکر کرد.
این عوامل ضروری برای مدت طولانی برنامه را پایدار نگه میدارند و به کسب و کار ها اجازه میدهند که به نتایج خوب برسند. یکی از این عوامل که میتواند باعث سریع تر شدن روند توسعه نرم افزار شود، استفاده از ابزار های ORM هست.
برای درک بهتر این مطلب شما به این مهارت ها نیاز خواهید داشت:
به زبان ساده، Object-relational mapping (ORM) یک لایه هست که اطلاعات رو بین Database و Object-oriented entities با استفاده از برنامه نویسی شیء گرا (OOP) به همدیگه تبدیل میکنه.
ابزار زیادی برای ORM در بازار موجود هست، و ما امروز از یکی از آنها به نام Prisma.io استفاده میکنیم.
مهم ترین قسمت برنامه نویس بودن JavaScript این هست که Node.Js رو نصب داشته باشید رو سیستمتون ?
اگر Node.Js رو نصب ندارید با استفاده از این لینک به سایتش برید و حتما ورژن Long Term Support (LTS) رو دانلود کنید.
حالا بریم سراغ نصب PostgreSQL، چیزی که قراره به عنوان Database ازش استفاده کنیم.
از این لینک ورژن مربوط به سیستمتون رو انتخاب کنید و نصب کنید.
بعد از نصب برنامه pgAdmin رو بیارید بالا که سرور دیتابیس رو اماده کنیم.
(تو این برنامه باید یه پسورد درست کنید اولش، خیلی جاها این پسورد رو میخواد از شما، یادتون بمونتش حتما)
مرحله 1: روی Servers راست کلیک کنید، Create رو بزنید و روی Server بزنید.
مرحله 2: Name رو دلخواه میتونید بزارید، من گذاشتم Virgool.
مرحله 3: از بالای این قسمت برید توی Connection و Host name/address رو بزارید localhost، فیلد password هم باید پسوردی که اول برنامه وارد کردید رو بزنید. لازم نیست چیز دیگه ای عوض شه.
دیتابیس ساخته شد و بعدا ازش استفاده میکنیم توی کُدمون.
نوشت کد و وصل کردن Database و Prisma !
برای این پروژه ما از VsCode استفاده میکنیم همونطور که بالاتر گفتیم، اگر نمیدونید چی هست میتونید از اینجا دانلود و نصبش کنید، آموزش استفاده ازش هم خیلی زیاد هست توی اینترنت.
یک فولدر درست کنید و VsCode رو ازونجا اجرا کنید.
توی این صفحه دکمه های Ctrl + shift + C رو بزنید که cmd باز بشه.
مرحله 1: دستور زیر رو وارد میکنیم تا پروژمون توسط Node package manager (npm) درست شه.
npm init -y
مرحله 2: دستور زیر رو وارد میکنیم تا پکیج هایی که لازم داریم نصب شن، همراه با Prisma و TypeScript.
npm install prisma typescript ts-node @types/node --save-dev
{ "compilerOptions": { "sourceMap": true, "outDir": "dist", "strict": true, "lib": ["esnext"], "esModuleInterop": true } }
مرحله 4: با استفاده از دستور زیر Prisma CLI (command line interface) رو راه میندازیم.
npx prisma
مرحله 5: دستور زیر 2 کار رو برای ما انجام میده:
npx prisma init
برای اینکار باید DATABASE_URL داخل فایل .env رو عوض کنیم و جایگزینش کنیم با آدرس دیتابیسی که ساختیم.
بریم ببینیم این قسمتای قرمز چی میگن:
قالب این url هم به این شکل هست:
postgresql://USER:PASSWORD@HOST:PORT/DATABASE?schema=SCHEMA
با استفاده از قابلیت Migrate میتونیم مدل هایی که مینویسیم رو از لایه ORM به دیتابیس تبدیل کنیم.
اول بریم سراغ نوشتن مدل هامون.
برای اینکار به فولدر Prisma توی پروژمون میریم و وارد schema.prisma میشیم و این کد رو مینویسیم:
model Scores { id Int @id @default(autoincrement()) createdAt DateTime @default(now()) score Int lesson String user User @relation(fields: [userId], references: [id]) userId Int } model User { id Int @id @default(autoincrement()) email String @unique name String age Int? Scores Scores[] }
که نهایتا فایل ما به این شکل خواهد رسید:
خب بریم سراغ اینکه کدی که نوشتیم چی هست و چیکار میکنه؟
تمام این Modifier ها رو میتونید تو اینجا ببینید.
برای اینکار بعد از نوشتن مدل ها این دستور رو وارد میکنیم:
npx prisma migrate dev --name init
کاری که این دستور انجام میده:
میتونید بعد از اینکار pgAdmin رو رفرش کنید و تغییراتی که انجام دادیم رو ببینید!
برای استفاده از قابلیت های کامل Prisma باید پکیج کلاینتش رو نصب کنیم، که با این دستور اون کار رو انجام میدیم:
npm install @prisma/client
کار هایی که این دستور انجام میده رو با عکس زیر توضیح میدم:
مرحله 1: پکیج داخل node_modules نصب میشه.
مرحله 2: اتوماتیک دستور prisma generate اجرا میشه.
مرحله 3: پکیجی که نصب کردیم (Prisma CLI) از داخل فایل schema.prisma مدل هایی که نوشته شده رو میخونه.
مرحله 4: وقتی مدل هارو خوند اونارو برمیگردونه به کلاینت prisma که بتونیم توی کد ازشون استفاده کنیم.
مرحله 5: این مدل های آپدیت شده رو به پکیج برمیگردونه که اونجا نگه داری شن. (در صورتی که فایل schema.prisma مشکلی براش پیش اومد فایل های ما خراب نشن)
حالا که کلاینت آمادس بریم سراغ نوشتن کد برای read و write کردن توی دیتابیس.
برای اینکار من توی پروژه کد رو بصورت Node.js خالی مینویسم که قابلیت های ابتدایی prisma رو بهتون نشون بدم و آشناتون کنم با این تکنولوژی.
برای شروع یک فایل به نام index.ts داخل پروژه درست کنید و کد های زیر رو توش بنویسید:
import { PrismaClient } from '@prisma/client' const prisma = new PrismaClient() async function main() { // query haro in dakhel minevisim } main() .catch((e) => { throw e }) .finally(async () => { await prisma.$disconnect() })
اگه این کد رو اجرا کنیم هیچ اتفاقی نمیوفته، چون هنوز کوئری به دیتابیس نزدیم.
برای نوشتن کوئری ها، کد هارو توی main() مینویسیم، این کد رو مینویسیم:
const allUsers = await prisma.user.findMany() console.log(allUsers)
که تابع main به این شکل در میاد:
حالا برای اجرای کد، این دستور رو وارد میکنیم:
npx ts-node index.ts
وقتی دستور اجرا شه میبینیم که توی کنسول فقط به ما یه لیست خالی میده، که منطقی هم هست چون هنوز هیچ دیتایی ندادیم بهش، پس بریم که یکم اطلاعات بریزیم و دیتابیس!
داخل تابع main این کد هارو جایگزین میکنیم:
await prisma.user.create({data: {name: "Mohammad reza",email: "mohammad@gmail.com",age: 20,Scores: {create: {lesson: "computer",score: 90,}}}}) const allUsers = await prisma.user.findMany({include: {Scores: true}}) console.dir(allUsers, {depth: null})
که تابعمون نهایتا به این شکل در میاد:
بعد از ذخیره و اجرای این کد ها، چیزی که در کنسول میبینیم به این شکل هست:
تا الان تونستیم عمل های read و write رو آشنا شیم باهاشون و انجامشون بدیم، آخرین چیزی که میمونه update هست، پس بریم سراغش.
داخل تابع main این کد هارو جایگزین میکنیم:
const score = await prisma.scores.update({where: {id: 1},data: {score: 100}}) console.log(score);
که تابعمون نهایتا به این شکل در میاد:
بعد از ذخیره و اجرای این کد ها، چیزی که در کنسول میبینیم به این شکل هست:
و میبینیم که نمره درس از 90 به 100 تغییر کرد.
این مقاله در رابطه با آشنایی Prisma نوشته شده و اگه از نظرتون تکنولوژی خوبی هست و بدردتون میخوره، یا خواستید راجبش بیشتر مطالعه کنید، از اینجا میتونید داکیومنت های سایت اصلی رو بخونید و از پتانسیل کامل Prisma استفاده کنید.
نویسنده: محمدرضا دیده خانی
استاد ناظر: دکتر مریم حاجی اسمعیلی. دکترای علوم کامپیوتر از دانشگاه کینگستون لندن