برنامه نویسی

درک روابط یک به یک با Prisma ORM

Prisma ORM یک ابزار قدرتمند برای مدیریت پایگاه داده در پروژه های Node.js و TypeScript است. یکی از مهمترین ویژگی های آن امکان تعریف روابط بین جداول از جمله روابط یک به یک (یک به یک) است. در این پست، نحوه راه اندازی و کار با روابط یک به یک در Prisma ORM را بررسی خواهیم کرد.

رابطه یک به یک چیست؟

در یک پایگاه داده، رابطه یک به یک به این معنی است که یک رکورد در یک جدول به طور مستقیم با یک رکورد در جدول دیگر مرتبط است. برای مثال، فرض کنید دو جدول دارید: User و Profile. هر یک User تک دارد Profile و هر کدام Profile متعلق به یک مجرد User.

راه اندازی یک رابطه یک به یک در Prisma

بیایید ببینیم چگونه با استفاده از Prisma ORM یک رابطه یک به یک بین دو جدول تعریف کنیم. برای این مثال، ما را ایجاد خواهیم کرد User و Profile جداول

مرحله 1: راه اندازی اولیه

ابتدا مطمئن شوید که Prisma را در پروژه خود نصب کرده اید:

npm install @prisma/client
npx prisma init
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این یک ایجاد خواهد کرد prisma دایرکتوری حاوی schema.prisma فایلی که در آن مدل داده خود را تعریف می کنیم.

مرحله 2: تعریف مدل ها

باز کن schema.prisma فایل و تعریف کنید User و Profile مدل ها:

model User {
  id      Int     @id @default(autoincrement())
  email   String  @unique
  name    String?
  profile Profile?

  @@map("users")
}

model Profile {
  id     Int    @id @default(autoincrement())
  bio    String
  userId Int    @unique
  user   User   @relation(fields: [userId], references: [id])

  @@map("profiles")
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در اینجا دو مدل را تعریف می کنیم:

  • User: نشان دهنده یک کاربر با یک شناسه منحصر به فرد، یک ایمیل منحصر به فرد، یک نام اختیاری و یک نمایه اختیاری است.
  • Profile: نمایه ای را با یک شناسه منحصر به فرد، یک بیو و یک نشان می دهد userId فیلدی که یک کلید خارجی است که به id از User.

مرحله 3: انتقال پایگاه داده

پس از تعریف مدل‌ها، باید پایگاه داده را منتقل کنیم تا این تغییرات منعکس شود:

npx prisma migrate dev --name init
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این باعث ایجاد users و profiles جداول در پایگاه داده شما با رابطه یک به یک پیکربندی شده است.

کار با روابط یک به یک

اکنون که مدل‌های خود را تعریف و انتقال داده‌ایم، بیایید ببینیم چگونه داده‌ها را با این رابطه ایجاد، مطالعه و دستکاری کنیم.

ایجاد کاربر و نمایه

import { PrismaClient } from '@prisma/client';

const prisma = new PrismaClient();

async function main() {
  const user = await prisma.user.create({
    data: {
      email: 'alice@prisma.io',
      name: 'Alice',
      profile: {
        create: {
          bio: 'Software Developer',
        },
      },
    },
  });

  console.log(user);
}

main()
  .catch((e) => {
    throw e;
  })
  .finally(async () => {
    await prisma.$disconnect();
  });
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در این مثال، ما در حال ایجاد یک User با یک مرتبط Profile در یک عملیات واحد

خواندن داده های مرتبط

برای واکشی یک کاربر همراه با نمایه او، از include عمل:

const userWithProfile = await prisma.user.findUnique({
  where: {
    email: 'alice@prisma.io',
  },
  include: {
    profile: true,
  },
});

console.log(userWithProfile);
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

به روز رسانی یک نمایه

برای به روز رسانی نمایه یک کاربر موجود:

const updatedProfile = await prisma.profile.update({
  where: {
    userId: userWithProfile.id,
  },
  data: {
    bio: 'Full Stack Developer',
  },
});

console.log(updatedProfile);
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

نتیجه

تعریف و کار با روابط یک به یک در Prisma ORM ساده و شهودی است. با پیکربندی صحیح در schema.prisma فایل و با استفاده از روش های ارائه شده توسط Prisma Client، به راحتی می توانید داده های مرتبط در پایگاه داده خود را مدیریت و تعامل کنید.

Prisma نه تنها فرآیند تعریف روابط را ساده می‌کند، بلکه یک API قدرتمند برای کار با این داده‌ها ارائه می‌کند و توسعه برنامه‌ها را کارآمدتر و سازنده‌تر می‌کند.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا