درک روابط یک به یک با 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 قدرتمند برای کار با این دادهها ارائه میکند و توسعه برنامهها را کارآمدتر و سازندهتر میکند.