برنامه نویسی

شناسه های قابل خواندن انسانی در Prismajs با چند خط کد

tl ؛ دکتر

استفاده کردن prisma-prefixed-ids برای تولید خودکار شناسه های پیشوند و قابل خواندن انسانی (مانند usr_abc123) در مدل های PRISMA شما. با الهام از مقاله Stripe در زمینه طراحی API برای انسان ، این پسوند کشویی وضوح و ساختار را فقط با یک خط تنظیم بهبود می بخشد. هیچ تغییر طرحواره ای لازم نیست.


چرا از شناسه های پیشوند استفاده می کنیم؟

آیا تا به حال یک API را اشکال زدایی کرده و فکر کرده اید “این شناسه حتی چیست؟”
Stripe این را با پیشوند شناسه های شیء حل می کند: cus_با pi_با sub_، و غیره که پیشوند کوچک فوراً زمینه را می دهد. من می خواستم که در پروژه های Prisma – به همین ترتیب من ساختم prisma-prefixed-idsبشر اکنون تمام مدل های Prisma من دارای شناسه های هوشمند و قابل خواندن هستند usr_xyz123بشر

نصب و استفاده

نصب آن:

npm install prisma-prefixed-ids
حالت تمام صفحه را وارد کنید

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

یک خط به تنظیم Prisma خود اضافه کنید:

import { PrismaClient } from "@prisma/client";
import { extendPrismaClient } from "prisma-prefixed-ids";

const prisma = new PrismaClient();

const db = extendPrismaClient(prisma, {
  prefixes: {
    User: "usr",
    Organization: "org",
  },
});
حالت تمام صفحه را وارد کنید

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

سپس به طور معمول از مشتری گسترده خود استفاده کنید:

const user = await db.user.create({
  data: { name: "Alice", email: "alice@example.com" }
});
console.log(user.id); // "usr_xxxxxxxx"
حالت تمام صفحه را وارد کنید

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

نیازی به تنظیم دستی شناسه نیست – آنها به طور خودکار با پیشوند صحیح تولید می شوند.

چرا استفاده کنید nanoid؟

به جای UUID ها ، این افزونه از نانوئید برای شناسه های کوتاه تر ، URL-SAFE و INTROPY استفاده می کند.

✅ ~ 128 بیتی تصادفی
✅ کوتاهتر از UUID (24 در مقابل 36 کاراکتر)
ito الفبای قابل تنظیم/طول
✅ عملکرد عالی

جایزه: تولید کننده شناسه سفارشی

شناسه های هگز می خواهید؟ رشته های کوتاه تر؟ می توانید ژنراتور خود را وصل کنید:

import { customAlphabet } from 'nanoid';

const generator = (prefix: string) => {
  const nanoid = customAlphabet("1234567890abcdef", 10);
  return `${prefix}_${nanoid()}`;
};

extendPrismaClient(prisma, {
  prefixes: { User: "usr" },
  idGenerator: generator,
});
حالت تمام صفحه را وارد کنید

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

Deep Dive (برای کنجکاو)

  • فقط روی مدل هایی با شناسه های رشته کار می کند.
  • از API پسوند بومی Prisma (تمیز ، بدون هک) استفاده می کند.
  • در صورت لزوم می توانید شناسه را به صورت دستی نادیده بگیرید.
  • من از آن در تولید در verex.ai استفاده می کنم – این سنگ جامد است.

امتحانش کن

دادن prisma-prefixed-ids چرخش در پروژه بعدی شما.
این منبع باز ، استفاده آسان است و داده های شما را برای DEVS ، پشتیبانی و حتی کاربران نهایی قابل خواندن تر می کند.

بازخورد و مشارکت در GitHub استقبال می شود.

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

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

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

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