استفاده همزمان از مدلهای پرسما و تایپاسکریپت
من اغلب از تأییدهای const در مدلهای تایپاسکریپتم استفاده میکنم:
const ListingVehicleTypes = [
"car",
"motorcycle",
"caravan",
"camper_trailer"
] as const;
interface LISTING {
vehicleType: typeof ListingVehicleTypes[number];
...
}
به این ترتیب، LISTING["vehicleType"] به درستی به عنوان "car" | "motorcycle" | "caravan" | "camper_trailer" استنباط میشود.
آیا میتوانم چنین محدودیتهایی را در schema.prisma خود بیان کنم؟ هیچگونه واردات یا ابزارهای تایپاسکریپت در فایلهای *.prisma مجاز نیست:
model Listing {
vehicleType typeof ListingVehicleTypes[number] // no-go
}
اگر نه، آیا راهی وجود دارد تا مدلهای پرسیما با مدلهای تایپسیفتر تایپاسکریپت هنگام اجرای کوئریهای پایگاه داده که توسط پرسیما پشتیبانی میشوند، «غنیسازی» شوند؟
من همیشه میتوانم بدنهها و پاسخهای پرسوجو را به any تبدیل کنم، اما آیا روش تمیزتری وجود دارد؟
برای آنچه ارزش دارد، من از ارائهدهنده mongodb استفاده میکنم -- اما فکر نمیکنم ارائهدهنده در اینجا نقشی داشته باشد.
پاسخ شماره ۱
پیشنهاد می کنم برای این کار از enum استفاده کنید. اما مطمئن شوید که از اینجا بررسی کنید که آیا enum ها در پایگاه داده زیربنایی پشتیبانی می شوند یا خیر.
در شمای پرزیما,
model Listing {
vehicleType VehicleType @default(car)
}
enum VehicleType {
car
motorcycle
caravan
camper_trailer
}
سپس در کد تایپاسکریپت خود میتوانید از این به صورت زیر استفاده کنید.
import { Listing } from "@prisma/client";
type VehicleTypes = Listing["vehicleType"];
