{"id":26199,"date":"2022-07-09T17:00:26","date_gmt":"2022-07-09T12:30:26","guid":{"rendered":"https:\/\/parspack.com\/blog\/?p=26199"},"modified":"2025-07-09T11:39:25","modified_gmt":"2025-07-09T07:09:25","slug":"how-build-rest-api-with-prisma-and-postgresql","status":"publish","type":"post","link":"https:\/\/parspack.com\/blog\/cms\/how-build-rest-api-with-prisma-and-postgresql","title":{"rendered":"\u0622\u0645\u0648\u0632\u0634 \u0633\u0627\u062e\u062a REST API \u0628\u0627 Prisma \u0648 PostgreSQL"},"content":{"rendered":"<p style=\"text-align: justify;\">\u0686\u06af\u0648\u0646\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646 REST API \u0631\u0627 \u0628\u0627 Prisma \u0648 PostgreSQL \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f\u061f Prisma \u0646\u0648\u0639\u06cc ORM \u0645\u062a\u0646\u200c\u0628\u0627\u0632 \u0628\u0631\u0627\u06cc Node.js \u0648 TypeScript \u0628\u0647\u200c\u0634\u0645\u0627\u0631 \u0645\u06cc\u200c\u0631\u0648\u062f \u06a9\u0647 \u0627\u0632 \u0633\u0647 \u0627\u0628\u0632\u0627\u0631 \u0627\u0635\u0644\u06cc \u062a\u0634\u06a9\u06cc\u0644 \u0634\u062f\u0647 \u0627\u0633\u062a:<\/p>\n<ul style=\"text-align: justify;\">\n<li aria-level=\"1\">Prisma Client: \u0633\u0627\u0632\u0646\u062f\u0647 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0648 \u0627\u06cc\u0645\u0646 \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a \u06a9\u0648\u0626\u0631\u06cc<\/li>\n<li aria-level=\"1\">Prisma Migrate: \u0633\u06cc\u0633\u062a\u0645 \u0642\u062f\u0631\u062a\u0645\u0646\u062f \u0628\u0631\u0627\u06cc \u0645\u062f\u0644\u200c\u0633\u0627\u0632\u06cc \u0648 Migration \u062f\u0627\u062f\u0647\u200c\u0647\u0627<\/li>\n<li aria-level=\"1\">Prisma Studio: \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc \u0628\u0631\u0627\u06cc \u0645\u0634\u0627\u0647\u062f\u0647 \u0648 \u0648\u06cc\u0631\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647\u200c\u0647\u0627 \u062f\u0631 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">\u0647\u062f\u0641 \u0627\u06cc\u0646 \u0627\u0628\u0632\u0627\u0631 \u0627\u0641\u0632\u0627\u06cc\u0634 \u0628\u0647\u0631\u0647\u200c\u0648\u0631\u06cc \u062a\u0648\u0633\u0639\u0647\u200c\u062f\u0647\u0646\u062f\u06af\u0627\u0646 \u062f\u0631 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0627\u0633\u062a. \u06cc\u06a9\u06cc \u0627\u0632 \u0645\u0632\u0627\u06cc\u0627\u06cc \u0645\u0647\u0645\u200c Prisma \u0633\u0637\u062d \u0627\u0646\u062a\u0632\u0627\u0639\u06cc\u200c\u0627\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f\u061b \u06cc\u0639\u0646\u06cc \u062a\u0648\u0633\u0639\u0647\u200c\u062f\u0647\u0646\u062f\u06af\u0627\u0646 \u0648 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0646\u0648\u06cc\u0633\u0627\u0646 \u0628\u0647\u200c\u062c\u0627\u06cc \u06a9\u0634\u0641 \u06a9\u0648\u0626\u0631\u06cc\u200c\u0647\u0627\u06cc \u067e\u06cc\u0686\u06cc\u062f\u0647 SQL \u06cc\u0627 Schema Migrations\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0646\u062f \u0647\u0646\u06af\u0627\u0645 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Prisma \u0627\u0637\u0644\u0627\u0639\u0627\u062a\u0634\u0627\u0646 \u0631\u0627 \u0628\u0647 \u0631\u0648\u0634\u06cc \u0634\u0647\u0648\u062f\u06cc\u200c\u062a\u0631 \u0627\u0633\u062a\u062f\u0644\u0627\u0644 \u06a9\u0646\u0646\u062f.<\/p>\n<p style=\"text-align: justify;\">\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647\u060c \u0646\u062d\u0648\u0647 \u0633\u0627\u062e\u062a REST API \u0628\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0648\u0628\u0644\u0627\u06af\u200c\u0646\u0648\u06cc\u0633\u06cc \u06a9\u0648\u0686\u06a9 \u062f\u0631 TypeScript \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Prisma \u0648 PostgreSQL \u0622\u0645\u0648\u0632\u0634 \u062e\u0648\u0627\u0647\u06cc\u0645 \u062f\u0627\u062f. \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0627\u0628\u062a\u062f\u0627 \u067e\u0627\u06cc\u06af\u0627\u0647\u200c\u062f\u0627\u062f\u0647 PostgreSQL \u062e\u0648\u062f \u0631\u0627 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u0644\u0648\u06a9\u0627\u0644 \u0628\u0627 Docker \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0648 \u0645\u0633\u06cc\u0631\u0647\u0627\u06cc REST API \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Express \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f. \u062f\u0631 \u067e\u0627\u06cc\u0627\u0646 \u0622\u0645\u0648\u0632\u0634\u060c \u0634\u0645\u0627 \u0648\u0628\u200c\u0633\u0631\u0648\u0631\u06cc \u0644\u0648\u06a9\u0627\u0644 \u0631\u0648\u06cc \u062f\u0633\u062a\u06af\u0627\u0647 \u062e\u0648\u062f \u062e\u0648\u0627\u0647\u06cc\u062f \u062f\u0627\u0634\u062a \u06a9\u0647 \u0628\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 HTTP \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u067e\u0627\u0633\u062e \u062f\u0647\u062f \u0648 \u062f\u0627\u062f\u0647\u200c\u0647\u0627 \u0631\u0627 \u062f\u0631 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0628\u062e\u0648\u0627\u0646\u062f \u0648 \u0628\u0646\u0648\u06cc\u0633\u062f.<\/p>\n<h2 style=\"text-align: justify;\"><span style=\"color: #3366ff;\"><b>\u067e\u06cc\u0634\u200c\u0646\u06cc\u0627\u0632\u0647\u0627\u06cc \u0633\u0627\u062e\u062a REST API<\/b><\/span><\/h2>\n<p style=\"text-align: justify;\">\u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a REST API \u0628\u0627 Prisma \u0648 PostgreSQL \u0627\u06cc\u0646 \u067e\u06cc\u0634\u200c\u0646\u06cc\u0627\u0632\u0647\u0627 \u0644\u0627\u0632\u0645 \u0627\u0633\u062a:<\/p>\n<ul style=\"text-align: justify;\">\n<li style=\"text-align: justify;\" aria-level=\"1\">\u00a0\u0628\u0627\u06cc\u062f Node.js \u0646\u0633\u062e\u0647 \u06f1\u06f0 \u06cc\u0627 \u062c\u062f\u06cc\u062f\u062a\u0631 \u0631\u0627 \u0631\u0648\u06cc \u0633\u06cc\u0633\u062a\u0645\u062a\u0627\u0646 \u0646\u0635\u0628 \u06a9\u0631\u062f\u0647 \u0628\u0627\u0634\u06cc\u062f. \u0628\u0631\u0627\u06cc \u0646\u0635\u0628 \u0648 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0627\u06cc\u0646 \u067e\u0644\u062a\u0641\u0631\u0645\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0647 \u0645\u0642\u0627\u0644\u0647 \u0622\u0645\u0648\u0632\u0634 \u0646\u062d\u0648\u0647 \u0646\u0635\u0628 Node.js \u062f\u0631 \u0648\u0628\u0644\u0627\u06af \u067e\u0627\u0631\u0633 \u067e\u06a9 \u0645\u0631\u0627\u062c\u0639\u0647 \u06a9\u0646\u06cc\u062f.<\/li>\n<li style=\"text-align: justify;\" aria-level=\"1\">\u0628\u0631\u0627\u06cc \u0646\u0635\u0628 \u0627\u062c\u0631\u0627\u06cc \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 PostgreSQL\u060c \u0628\u0647 \u0646\u0635\u0628 Docker \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u062f.<\/li>\n<\/ul>\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" data-loaded=\"true\" src=\"https:\/\/parspack.com\/blog\/wp-content\/uploads\/2022\/07\/build-a-rest-api-with-prisma-and-postgresql1.jpg\" class=\"wp-image-26239 size-full\" alt=\"\u0633\u0627\u062e\u062a rest api \u0628\u0627 prisma\" title=\"\u0633\u0627\u062e\u062a REST API \u0628\u0627 Prisma \"       width=\"750\" height=\"350\" srcset=\"https:\/\/parspack.com\/blog\/wp-content\/uploads\/2022\/07\/build-a-rest-api-with-prisma-and-postgresql1.jpg 750w, https:\/\/parspack.com\/blog\/wp-content\/uploads\/2022\/07\/build-a-rest-api-with-prisma-and-postgresql1-300x140.jpg 300w\" sizes=\"auto, (max-width: 750px) 100vw, 750px\" \/><figcaption class=\"text-subtitle-5 text-gray-9 text-center mt-2\" >\u0686\u06af\u0648\u0646\u0647 REST API \u0628\u0627 Prisma \u0628\u0633\u0627\u0632\u06cc\u0645\u061f<\/figcaption><\/figure>\n<h2 style=\"text-align: justify;\"><span style=\"color: #3366ff;\"><b>\u0645\u0631\u0627\u062d\u0644 \u0633\u0627\u062e\u062a REST API \u0628\u0627 Prisma \u0648 PostgreSQL<\/b><\/span><\/h2>\n<p style=\"text-align: justify;\">\u0633\u0627\u062e\u062a REST API \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Prisma \u0648 PostgreSQL \u0622\u0633\u0627\u0646 \u0648 \u0641\u0642\u0637 \u06a9\u0627\u0641\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0645\u0631\u0627\u062d\u0644 \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0647\u200c\u062a\u0631\u062a\u06cc\u0628 \u062f\u0646\u0628\u0627\u0644 \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"cta-section\">\n<p class=\"cta-description\">\u0645\u0642\u0627\u0644\u0647\u200c\u06cc \u0632\u06cc\u0631 \u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u06a9\u0627\u0645\u0644\u06cc \u0627\u0633\u062a \u0627\u0632 \u0686\u06cc\u0633\u062a\u06cc API\u060c \u0627\u0646\u0648\u0627\u0639\u060c \u067e\u0631\u0648\u062a\u06a9\u0644\u200c\u0647\u0627 \u0648&#8230; \u0648 \u0628\u0631\u0627\u06cc \u062f\u0631\u06a9 \u0628\u0647\u062a\u0631 \u0645\u0641\u0647\u0648\u0645 API \u062a\u0648\u0635\u06cc\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n<p><a class=\"cta-button \" href=\"https:\/\/parspack.com\/blog\/programming\/what-is-api\" target=\"_blank\" rel=\"noopener\">API \u0686\u06cc\u0633\u062a\u061f<\/a><\/p>\n<\/div>\n<h2 style=\"text-align: justify;\"><span style=\"color: #3366ff;\"><b>\u0645\u0631\u062d\u0644\u0647 \u0627\u0648\u0644. \u0627\u06cc\u062c\u0627\u062f TypeScript Project<\/b><\/span><\/h2>\n<p style=\"text-align: justify;\">\u062f\u0631 \u0645\u0631\u062d\u0644\u0647 \u0627\u0648\u0644\u060c \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 npm \u0628\u0627\u06cc\u062f \u067e\u0631\u0648\u0698\u0647 TypeScript \u0627\u06cc\u062c\u0627\u062f \u0648 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f. \u0627\u06cc\u0646 \u067e\u0631\u0648\u0698\u0647 \u0627\u0633\u0627\u0633 REST API \u0627\u0633\u062a \u06a9\u0647 \u062f\u0631 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u062f \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f. \u0628\u0631\u0627\u06cc \u0627\u0646\u062c\u0627\u0645 \u0627\u06cc\u0646 \u06a9\u0627\u0631\u060c \u0646\u062e\u0633\u062a \u0628\u0627\u06cc\u062f \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u062c\u062f\u06cc\u062f\u06cc \u0628\u0631\u0627\u06cc \u067e\u0631\u0648\u0698\u0647 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f. \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u067e\u0631\u0648\u0698\u0647 \u062c\u062f\u06cc\u062f\u060c \u0627\u0632 \u06a9\u0627\u0645\u0646\u062f \u0632\u06cc\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">mkdir my-blog<\/pre>\n<p style=\"text-align: justify;\">\u0627\u06a9\u0646\u0648\u0646 \u0628\u0647 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0628\u0631\u0648\u06cc\u062f \u0648 \u067e\u0631\u0648\u0698\u0647 \u062e\u0627\u0644\u06cc npm \u0631\u0627 \u0628\u0631\u0627\u06cc \u0634\u0631\u0648\u0639 \u0639\u0645\u0644\u06cc\u0627\u062a \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f. \u062a\u0648\u062c\u0647 \u06a9\u0646\u06cc\u062f \u06af\u0632\u06cc\u0646\u0647 y- \u0628\u062f\u06cc\u0646\u200c\u0645\u0639\u0646\u0627\u0633\u062a \u06a9\u0647 \u0627\u0632 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062a\u0639\u0627\u0645\u0644\u06cc \u0635\u0631\u0641\u200c\u0646\u0638\u0631 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f\u061b \u0628\u0647\u200c\u0647\u0645\u06cc\u0646\u200c\u062f\u0644\u06cc\u0644\u060c \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u0627\u06cc\u0646 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627 \u0628\u0627\u06cc\u062f \u06af\u0632\u06cc\u0646\u0647 y- \u0631\u0627 \u062d\u0630\u0641 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">cd my-blog\r\nnpm init -y<\/pre>\n<p style=\"text-align: justify;\">\u062d\u0627\u0644 \u062e\u0631\u0648\u062c\u06cc \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0627 \u067e\u0627\u0633\u062e\u200c\u0647\u0627\u06cc \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 \u062f\u0631\u06cc\u0627\u0641\u062a \u062e\u0648\u0627\u0647\u06cc\u062f \u06a9\u0631\u062f:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">Output\r\nWrote to \/...\/my-blog\/package.json:\r\n\r\n{\r\n  \"name\": \"my-blog\",\r\n  \"version\": \"1.0.0\",\r\n  \"description\": \"\",\r\n  \"main\": \"index.js\",\r\n  \"scripts\": {\r\n    \"test\": \"echo \\\"Error: no test specified\\\" &amp;&amp; exit 1\"\r\n  },\r\n  \"keywords\": [],\r\n  \"author\": \"\",\r\n  \"license\": \"ISC\"\r\n}<\/pre>\n<p style=\"text-align: justify;\">\u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u0641\u0627\u06cc\u0644 \u0645\u06cc\u0646\u06cc\u0645\u0627\u0644 package.json \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f \u06a9\u0647 \u0627\u0632 \u0622\u0646 \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 \u0641\u0627\u06cc\u0644 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u067e\u0631\u0648\u0698\u0647 npm \u062e\u0648\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u062f \u06a9\u0631\u062f. \u0627\u06a9\u0646\u0648\u0646 \u0622\u0645\u0627\u062f\u0647 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc TypeScript \u062f\u0631 \u067e\u0631\u0648\u0698\u0647 \u062e\u0648\u062f \u0647\u0633\u062a\u06cc\u062f. \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc TypeScript \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">npm install typescript ts-node @types\/node --save-dev<\/pre>\n<p style=\"text-align: justify;\">\u062a\u0648\u062c\u0647 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0633\u0647 \u062f\u0633\u062a\u0647 \u0632\u06cc\u0631 \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc\u200c\u0647\u0627\u06cc \u062f\u0648\u0644\u0648\u067e\u0631 \u062f\u0631 \u067e\u0631\u0648\u0698\u0647 \u0634\u0645\u0627 \u0646\u0635\u0628 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f:<\/p>\n<ul style=\"text-align: justify;\">\n<li aria-level=\"1\">\u00a0<b>Typescript:<\/b> \u0627\u0628\u0632\u0627\u0631 TypeScript<\/li>\n<li aria-level=\"1\"><b>ts-node:<\/b> \u067e\u06a9\u06cc\u062c\u06cc \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc TypeScript \u0628\u062f\u0648\u0646 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0642\u0628\u0644\u06cc \u062f\u0631 \u062c\u0627\u0648\u0627\u0627\u0633\u06a9\u0631\u06cc\u067e\u062a<\/li>\n<li aria-level=\"1\"><b>types\/node@:<\/b> \u062a\u0639\u0631\u06cc\u0641 \u0646\u0648\u0639 TypeScript \u0628\u0631\u0627\u06cc Node.js<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">\u0622\u062e\u0631\u06cc\u0646 \u06a9\u0627\u0631 \u0627\u0636\u0627\u0641\u0647\u200c\u06a9\u0631\u062f\u0646 \u0641\u0627\u06cc\u0644 tsconfig.json \u0627\u0633\u062a. \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u0645\u0646\u0638\u0648\u0631\u060c \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f TypeScript \u0628\u0647\u200c\u062f\u0631\u0633\u062a\u06cc \u0628\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0627\u06cc \u06a9\u0647 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u062f \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f\u060c \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a. \u0627\u0628\u062a\u062f\u0627 \u06a9\u0627\u0645\u0646\u062f \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u0641\u0627\u06cc\u0644 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">nano tsconfig.json<\/pre>\n<p style=\"text-align: justify;\">\u06a9\u062f JSON \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0647 \u0641\u0627\u06cc\u0644 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">{\r\n  \"compilerOptions\": {\r\n    \"sourceMap\": true,\r\n    \"outDir\": \"dist\",\r\n    \"strict\": true,\r\n    \"lib\": [\"esnext\"],\r\n    \"esModuleInterop\": true\r\n  }\r\n}<\/pre>\n<p style=\"text-align: justify;\">\u062f\u0631\u0646\u0647\u0627\u06cc\u062a\u060c \u0641\u0627\u06cc\u0644 \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u06cc\u062f \u0648 \u0627\u0632 \u0622\u0646 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f. \u062a\u0648\u062c\u0647 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0627\u06cc\u0646 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc\u200c\u0627\u06cc \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f \u0628\u0631\u0627\u06cc \u067e\u0631\u0648\u0698\u0647 TypeScript \u0627\u0633\u062a. \u0627\u06af\u0631 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u062f \u062f\u0631\u0628\u0627\u0631\u0647 \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u0641\u0627\u06cc\u0644 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u0633\u0628 \u06a9\u0646\u06cc\u062f\u060c \u0622\u0646\u200c\u0647\u0627 \u0631\u0627 \u062f\u0631 \u0627\u0633\u0646\u0627\u062f TypeScript \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u062c\u0633\u062a\u200c\u0648\u062c\u0648 \u06a9\u0646\u06cc\u062f.<\/p>\n<p style=\"text-align: justify;\">\u0627\u06a9\u0646\u0648\u0646 \u067e\u0631\u0648\u0698\u0647 TypeScript \u062e\u0648\u062f \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 npm \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u062f. \u062f\u0631 \u0645\u0631\u062d\u0644\u0647 \u062f\u0648\u0645\u060c \u067e\u0627\u06cc\u06af\u0627\u0647\u200c\u062f\u0627\u062f\u0647 PostgreSQL \u0631\u0627 \u0628\u0627\u06cc\u062f \u0628\u0627 Docker \u062a\u0646\u0638\u06cc\u0645 \u0648 Prisma \u0631\u0627 \u0628\u0647 \u0622\u0646 \u0645\u062a\u0635\u0644 \u06a9\u0646\u06cc\u062f.<\/p>\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" data-loaded=\"true\" src=\"https:\/\/parspack.com\/blog\/wp-content\/uploads\/2022\/07\/build-a-rest-api-with-prisma-and-postgresql2.jpg\" class=\"wp-image-26240 size-full\" alt=\"API \u062f\u0631 Prisma \u0648 PostgreSQL \u0686\u06cc\u0633\u062a\u061f\" title=\"\u0645\u0631\u0627\u062d\u0644 \u0633\u0627\u062e\u062a\u00a0 REST API \u062f\u0631 Prisma \u0648 PostgreSQL\"       width=\"750\" height=\"564\" srcset=\"https:\/\/parspack.com\/blog\/wp-content\/uploads\/2022\/07\/build-a-rest-api-with-prisma-and-postgresql2.jpg 750w, https:\/\/parspack.com\/blog\/wp-content\/uploads\/2022\/07\/build-a-rest-api-with-prisma-and-postgresql2-300x226.jpg 300w\" sizes=\"auto, (max-width: 750px) 100vw, 750px\" \/><figcaption class=\"text-subtitle-5 text-gray-9 text-center mt-2\" >\u06af\u0627\u0645\u200c\u0628\u0647\u200c\u06af\u0627\u0645 \u0628\u0627 \u0633\u0627\u062e\u062a\u00a0 REST API \u062f\u0631 Prisma \u0648 PostgreSQL<\/figcaption><\/figure>\n<h2 style=\"text-align: justify;\"><span style=\"color: #3366ff;\"><b>\u0645\u0631\u062d\u0644\u0647 \u062f\u0648\u0645. \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc Prisma \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 PostgreSQL<\/b><\/span><\/h2>\n<p style=\"text-align: justify;\">\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647\u060c Prisma CLI \u0631\u0627 \u0628\u0627\u06cc\u062f \u0646\u0635\u0628 \u0648 \u0641\u0627\u06cc\u0644 Prisma Schema \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f. \u0633\u067e\u0633 PostgreSQL \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Docker \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0648 Prisma \u0631\u0627 \u0628\u0647 \u0622\u0646 \u0645\u062a\u0635\u0644 \u06a9\u0646\u06cc\u062f. \u062f\u0642\u062a \u06a9\u0646\u06cc\u062f Prisma Schema \u0641\u0627\u06cc\u0644 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0627\u0635\u0644\u06cc \u0628\u0631\u0627\u06cc \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc Prisma \u0648 \u0634\u0627\u0645\u0644 Database schema \u0634\u0645\u0627\u0633\u062a.<\/p>\n<div class=\"cta-section\">\n<p class=\"cta-description\">\u0628\u0631\u0627\u06cc \u0622\u0634\u0646\u0627\u06cc\u06cc \u06a9\u0627\u0645\u0644\u200c\u062a\u0631 \u0628\u0627 PostgreSQL \u0648 \u0646\u062d\u0648\u0647 \u0646\u0635\u0628 \u0622\u0646 \u0645\u0642\u0627\u0644\u0647\u200c\u06cc \u0632\u06cc\u0631 \u0631\u0627 \u0628\u062e\u0648\u0627\u0646\u06cc\u062f.<\/p>\n<p><a class=\"cta-button \" href=\"https:\/\/parspack.com\/blog\/hosting\/learn-server\/postgresql-setup\" target=\"_blank\" rel=\"noopener\">\u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u067e\u0633\u062a\u06af\u0631\u0633 ( PostgreSQL ) \u0686\u06cc\u0633\u062a \u0648 \u0686\u06af\u0648\u0646\u0647 \u0622\u0646 \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u0645\u061f<\/a><\/p>\n<\/div>\n<p style=\"text-align: justify;\">\u0628\u0627 \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631\u060c \u0646\u0635\u0628 Prisma CLI \u0631\u0627 \u0634\u0631\u0648\u0639 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">npm install @prisma\/cli --save-dev<\/pre>\n<p style=\"text-align: justify;\">\u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 \u0628\u0647\u062a\u0631\u06cc\u0646 \u0631\u0648\u0634\u060c \u062a\u0648\u0635\u06cc\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 install the Prisma CLI locally \u0631\u0627 \u0628\u0631\u0627\u06cc \u067e\u0631\u0648\u0698\u0647\u200c\u062a\u0627\u0646 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f (\u0628\u0631\u062e\u0644\u0627\u0641 \u0646\u0635\u0628 \u062c\u0647\u0627\u0646\u06cc). \u0628\u0627 \u0627\u0646\u062c\u0627\u0645 \u0627\u06cc\u0646 \u06a9\u0627\u0631\u060c \u0627\u06af\u0631 \u0628\u06cc\u0634 \u0627\u0632 \u06cc\u06a9 \u067e\u0631\u0648\u0698\u0647 Prisma \u0631\u0648\u06cc \u062f\u0633\u062a\u06af\u0627\u0647 \u062e\u0648\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f\u060c \u0627\u0632 \u062a\u0636\u0627\u062f \u0646\u0633\u062e\u0647 \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f. \u062f\u0631 \u0645\u0631\u062d\u0644\u0647 \u0628\u0639\u062f\u060c \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 PostgreSQL \u062e\u0648\u062f \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Docker \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f. \u0628\u0631\u0627\u06cc \u0627\u0646\u062c\u0627\u0645 \u0627\u06cc\u0646 \u06a9\u0627\u0631\u060c \u0628\u0627\u06cc\u062f \u0646\u062e\u0633\u062a \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06a9\u0627\u0645\u0646\u062f \u0632\u06cc\u0631 \u0641\u0627\u06cc\u0644 Docker Compose \u062c\u062f\u06cc\u062f\u06cc \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">nano docker-compose.yml<\/pre>\n<p style=\"text-align: justify;\">\u062d\u0627\u0644\u0627 \u06a9\u062f \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0647 \u0641\u0627\u06cc\u0644 \u062c\u062f\u06cc\u062f \u0627\u06cc\u062c\u0627\u062f\u200c\u0634\u062f\u0647 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">version: '3.8'\r\nservices:\r\n  postgres:\r\n    image: postgres:10.3\r\n    restart: always\r\n    environment:\r\n      - POSTGRES_USER=sammy\r\n      - POSTGRES_PASSWORD=your_password\r\n    volumes:\r\n      - postgres:\/var\/lib\/postgresql\/data\r\n    ports:\r\n      - '5432:5432'\r\nvolumes:\r\n  postgres:<\/pre>\n<p style=\"text-align: justify;\">\u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 Docker Compose \u067e\u0627\u06cc\u06af\u0627\u0647\u200c\u062f\u0627\u062f\u0647 PostgreSQL \u0631\u0627 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f \u06a9\u0647 \u0627\u0632\u0637\u0631\u06cc\u0642 \u067e\u0648\u0631\u062a 5432 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u062f\u0627\u06a9\u0631 \u062f\u0631\u062f\u0633\u062a\u0631\u0633 \u0627\u0633\u062a. \u0647\u0645\u0686\u0646\u06cc\u0646\u060c \u062a\u0648\u062c\u0647 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0627\u0639\u062a\u0628\u0627\u0631 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u062f\u0631\u200c\u062d\u0627\u0644\u200c\u062d\u0627\u0636\u0631 \u0628\u0647\u200c\u0635\u0648\u0631\u062a sammy (user)\u00a0 \u0648 your_password (password) \u062a\u0646\u0638\u06cc\u0645 \u0634\u062f\u0647 \u0627\u0633\u062a. \u0627\u06cc\u0646 \u0627\u0639\u062a\u0628\u0627\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627 \u0631\u0627 \u0628\u0647\u200c\u0631\u0627\u062d\u062a\u06cc \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0627 \u06a9\u0627\u0631\u0628\u0631 \u0648 \u0631\u0645\u0632\u0639\u0628\u0648\u0631 \u062f\u0644\u062e\u0648\u0627\u0647\u062a\u0627\u0646 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f. \u062f\u0631 \u0622\u062e\u0631\u060c \u0641\u0627\u06cc\u0644 \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u06cc\u062f \u0648 \u0627\u0632 \u0622\u0646 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f.<\/p>\n<p style=\"text-align: justify;\">\u062d\u0627\u0644 \u0628\u0627 \u0627\u06cc\u0646 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a\u060c \u067e\u06cc\u0634 \u0628\u0631\u0648\u06cc\u062f \u0648 \u0633\u0631\u0648\u0631 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 PostgreSQL \u0631\u0627 \u0628\u0627 \u06a9\u0627\u0645\u0646\u062f \u0632\u06cc\u0631 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">docker-compose up -d<\/pre>\n<p style=\"text-align: justify;\">\u0627\u06a9\u0646\u0648\u0646 \u0628\u0627\u06cc\u062f \u062e\u0631\u0648\u062c\u06cc \u0632\u06cc\u0631 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">Output\r\nPulling postgres (postgres:10.3)...\r\n10.3: Pulling from library\/postgres\r\nf2aa67a397c4: Pull complete\r\n6de83ca23e55: Pull complete\r\n. . .\r\nStatus: Downloaded newer image for postgres:10.3\r\nCreating my-blog_postgres_1 ... done<\/pre>\n<p style=\"text-align: justify;\">\u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0641\u0631\u0645\u0627\u0646 \u0632\u06cc\u0631\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0633\u0631\u0648\u0631 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627 \u0627\u0633\u062a \u06cc\u0627 \u062e\u06cc\u0631:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">docker ps<\/pre>\n<p style=\"text-align: justify;\">\u0633\u067e\u0633\u060c \u062e\u0631\u0648\u062c\u06cc\u200c\u0627\u06cc \u0645\u0634\u0627\u0628\u0647 \u0628\u0627 \u062e\u0631\u0648\u062c\u06cc \u0632\u06cc\u0631 \u0645\u0634\u0627\u0647\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u062f \u06a9\u0631\u062f:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">Output\r\nCONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES\r\n8547f8e007ba        postgres:10.3       \"docker-entrypoint.s\u2026\"   3 seconds ago       Up 2 seconds        0.0.0.0:5432-&gt;5432\/tcp   my-blog_postgres_1<\/pre>\n<p style=\"text-align: justify;\">\u0628\u0627 \u0627\u062c\u0631\u0627\u0634\u062f\u0646 \u0633\u0631\u0648\u0631 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647\u060c \u0627\u0645\u06a9\u0627\u0646 \u0627\u06cc\u062c\u0627\u062f <span class=\"VIiyi\" lang=\"fa\"><span class=\"JLqJ4b ChMk0b C1N51c\" data-language-for-alternatives=\"fa\" data-language-to-translate-into=\"en\" data-phrase-index=\"0\" data-number-of-phrases=\"2\"><span class=\"Q4iAWc\"> \u062a\u0646\u0638\u06cc\u0645\u0627\u062a Prisma<\/span><\/span><\/span> \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc\u200c\u0634\u0648\u062f\u060c \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u0645\u0646\u0638\u0648\u0631 <span class=\"VIiyi\" lang=\"fa\"> <span class=\"JLqJ4b ChMk0b\" data-language-for-alternatives=\"fa\" data-language-to-translate-into=\"en\" data-phrase-index=\"1\" data-number-of-phrases=\"2\"><span class=\"Q4iAWc\">\u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0631\u0627 \u0627\u0632 Prisma CLI \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/span><\/span><\/span><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">npx prisma init<\/pre>\n<p style=\"text-align: justify;\">\u0628\u0627 \u0627\u0646\u062c\u0627\u0645 \u0627\u06cc\u0646 \u06a9\u0627\u0631\u060c \u062e\u0631\u0648\u062c\u06cc \u0632\u06cc\u0631 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u062f \u0634\u062f:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">Output\r\n\u2714 Your Prisma schema was created at prisma\/schema.prisma.\r\n  You can now open it in your favorite editor.<\/pre>\n<p style=\"text-align: justify;\">\u062a\u0648\u062c\u0647 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 \u0628\u0647\u062a\u0631\u06cc\u0646 \u0631\u0648\u0634\u060c \u0628\u0627\u06cc\u062f \u0647\u0645\u0647 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u200c\u0647\u0627\u06cc Prisma CLI \u0631\u0627 \u0628\u0627 npx \u067e\u06cc\u0634\u0648\u0646\u062f \u06a9\u0646\u06cc\u062f. \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc\u200c\u06a9\u0646\u062f \u06a9\u0647 \u0627\u0632 \u0646\u0635\u0628 \u0644\u0648\u06a9\u0627\u0644 \u0634\u0645\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f. \u067e\u0633 \u0627\u0632 \u0627\u062c\u0631\u0627\u06cc \u06a9\u0627\u0645\u0646\u062f\u060c Prisma CLI \u067e\u0648\u0634\u0647 \u062c\u062f\u06cc\u062f\u06cc \u0628\u0647 \u0646\u0627\u0645 prisma \u062f\u0631 \u067e\u0631\u0648\u0698\u0647 \u0634\u0645\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0627\u06cc\u0646 \u067e\u0648\u0634\u0647 \u0634\u0627\u0645\u0644 \u062f\u0648 \u0641\u0627\u06cc\u0644 \u0632\u06cc\u0631 \u0627\u0633\u062a:<\/p>\n<ul style=\"text-align: justify;\">\n<li aria-level=\"1\"><b>schema.prisma:<\/b> \u0641\u0627\u06cc\u0644 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0627\u0635\u0644\u06cc \u067e\u0631\u0648\u0698\u0647 Prisma (\u0634\u0627\u0645\u0644 \u0645\u062f\u0644 \u062f\u0627\u062f\u0647)<\/li>\n<li aria-level=\"1\"><b>env.: <\/b>\u0641\u0627\u06cc\u0644 dotenv \u0628\u0631\u0627\u06cc \u062a\u0639\u0631\u06cc\u0641 URL \u0627\u062a\u0635\u0627\u0644 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">\u0628\u0631\u0627\u06cc \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 Prisma \u0627\u0632 \u0645\u06a9\u0627\u0646 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0627\u0637\u0644\u0627\u0639 \u062f\u0627\u0631\u062f\u060c \u0628\u0627\u06cc\u062f \u0641\u0627\u06cc\u0644 env. \u0631\u0627 \u0628\u0627\u0632 \u0648 \u0645\u062a\u063a\u06cc\u0631 \u0645\u062d\u06cc\u0637\u06cc DATABASE_URL \u0631\u0627 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f. \u0627\u0628\u062a\u062f\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06a9\u0627\u0645\u0646\u062f \u0632\u06cc\u0631 \u0641\u0627\u06cc\u0644 env. \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">$ nano prisma\/.env<\/pre>\n<p style=\"text-align: justify;\">\u0627\u06a9\u0646\u0648\u0646\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0645\u062a\u063a\u06cc\u0631 \u0645\u062d\u06cc\u0637\u06cc (Environment Variable) \u0631\u0627 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u0632\u06cc\u0631 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">DATABASE_URL=\"postgresql:\/\/sammy:your_password@localhost:5432\/my-blog?schema=public\"<\/pre>\n<p style=\"text-align: justify;\">\u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u06a9\u0647 \u0627\u0639\u062a\u0628\u0627\u0631 \u067e\u0627\u06cc\u06af\u0627\u0647\u200c\u062f\u0627\u062f\u0647 (Database Credentials) \u0631\u0627 \u0628\u0647 \u0645\u0648\u0627\u0631\u062f\u06cc \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0627\u062f\u0647\u200c\u0627\u06cc\u062f \u06a9\u0647 \u062f\u0631 \u0641\u0627\u06cc\u0644 Docker Compose \u0645\u0634\u062e\u0635 \u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u062f. \u067e\u0633 \u0627\u0632 \u0627\u062a\u0645\u0627\u0645 \u06a9\u0627\u0631\u060c \u0641\u0627\u06cc\u0644 \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u06cc\u062f \u0648 \u0627\u0632 \u0622\u0646 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f.<\/p>\n<p style=\"text-align: justify;\">\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647\u060c \u067e\u0627\u06cc\u06af\u0627\u0647\u200c\u062f\u0627\u062f\u0647 PostgreSQL \u062e\u0648\u062f \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Docker \u062a\u0646\u0638\u06cc\u0645 \u0648 Prisma CLI \u0631\u0627 \u0646\u0635\u0628 \u0648 Prisma \u0631\u0627 \u0627\u0632\u0637\u0631\u06cc\u0642 \u0645\u062a\u063a\u06cc\u0631\u06cc \u0645\u062d\u06cc\u0637\u06cc \u0628\u0647 \u067e\u0627\u06cc\u06af\u0627\u0647\u200c\u062f\u0627\u062f\u0647 \u0645\u062a\u0635\u0644 \u06a9\u0631\u062f\u06cc\u062f. \u062f\u0631 \u0628\u062e\u0634 \u0628\u0639\u062f\u06cc\u060c \u0628\u0627\u06cc\u062f \u0645\u062f\u0644 \u062f\u0627\u062f\u0647 \u062e\u0648\u062f \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0648 \u062c\u062f\u0627\u0648\u0644 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f.<\/p>\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" data-loaded=\"true\" src=\"https:\/\/parspack.com\/blog\/wp-content\/uploads\/2022\/07\/build-a-rest-api-with-prisma-and-postgresql3.jpg\" class=\"wp-image-26241 size-full\" alt=\"\u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc Prisma \u062f\u0631 Postgresql \" title=\"\u0646\u062d\u0648\u0647 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc Prisma \u0628\u0627 PostgreSQL\"       width=\"750\" height=\"564\" srcset=\"https:\/\/parspack.com\/blog\/wp-content\/uploads\/2022\/07\/build-a-rest-api-with-prisma-and-postgresql3.jpg 750w, https:\/\/parspack.com\/blog\/wp-content\/uploads\/2022\/07\/build-a-rest-api-with-prisma-and-postgresql3-300x226.jpg 300w\" sizes=\"auto, (max-width: 750px) 100vw, 750px\" \/><figcaption class=\"text-subtitle-5 text-gray-9 text-center mt-2\" >\u0646\u062d\u0648\u0647 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc Prisma \u0628\u0627 PostgreSQL \u0686\u06af\u0648\u0646\u0647 \u0627\u0633\u062a\u061f<\/figcaption><\/figure>\n<h2 style=\"text-align: justify;\"><span style=\"color: #3366ff;\"><b>\u0645\u0631\u062d\u0644\u0647 \u0633\u0648\u0645. \u062a\u0639\u0631\u06cc\u0641 Data Model\u00a0 \u0648 \u0627\u06cc\u062c\u0627\u062f Database Tables<\/b><\/span><\/h2>\n<p style=\"text-align: justify;\">\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647\u060c \u0645\u062f\u0644 \u062f\u0627\u062f\u0647 \u062e\u0648\u062f \u0631\u0627 \u062f\u0631 \u0641\u0627\u06cc\u0644 Prisma Schema \u0628\u0627\u06cc\u062f \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u062f. \u0633\u067e\u0633\u060c \u0627\u06cc\u0646 \u0645\u062f\u0644 \u062f\u0627\u062f\u0647 \u0628\u0627 Prisma Migrate \u0628\u0647 \u067e\u0627\u06cc\u06af\u0627\u0647\u200c\u062f\u0627\u062f\u0647 \u0646\u06af\u0627\u0634\u062a \u0645\u06cc\u200c\u0634\u0648\u062f \u06a9\u0647 \u062f\u0633\u062a\u0648\u0631\u0647\u0627\u06cc SQL \u0631\u0627 \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u062c\u062f\u0627\u0648\u0644 \u0645\u0637\u0627\u0628\u0642 \u0628\u0627 \u0645\u062f\u0644 \u062f\u0627\u062f\u0647 \u0634\u0645\u0627 \u062a\u0648\u0644\u06cc\u062f \u0648 \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0627\u0632\u0622\u0646\u200c\u062c\u0627\u06a9\u0647 \u062f\u0631 \u062d\u0627\u0644 \u0633\u0627\u062e\u062a \u0628\u0631\u0646\u0627\u0645\u0647 \u0648\u0628\u0644\u0627\u06af\u200c\u0646\u0648\u06cc\u0633\u06cc \u0647\u0633\u062a\u06cc\u062f\u060c \u0645\u0648\u062c\u0648\u062f\u06cc\u062a\u200c\u0647\u0627\u06cc \u0627\u0635\u0644\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u06a9\u0627\u0631\u0628\u0631\u0647\u0627 \u0648 \u067e\u0633\u062a\u200c\u0647\u0627 \u062e\u0648\u0627\u0647\u0646\u062f \u0628\u0648\u062f.<\/p>\n<p style=\"text-align: justify;\">Prisma \u0627\u0632 \u0632\u0628\u0627\u0646 \u0645\u062f\u0644\u200c\u0633\u0627\u0632\u06cc \u062f\u0627\u062f\u0647 \u062e\u0648\u062f \u0628\u0631\u0627\u06cc \u062a\u0639\u0631\u06cc\u0641 \u0634\u06a9\u0644 \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0634\u0645\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0627\u0628\u062a\u062f\u0627 \u0641\u0627\u06cc\u0644 schema.prisma \u062e\u0648\u062f \u0631\u0627 \u0628\u0627 \u06a9\u0627\u0645\u0646\u062f \u0632\u06cc\u0631 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">nano prisma\/schema.prisma<\/pre>\n<p style=\"text-align: justify;\">\u062d\u0627\u0644 \u062a\u0639\u0627\u0631\u06cc\u0641 \u0645\u062f\u0644 \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0647 \u0622\u0646 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f. \u0645\u062f\u0644\u200c\u0647\u0627 \u0631\u0627 \u062f\u0631 \u067e\u0627\u06cc\u06cc\u0646 \u0641\u0627\u06cc\u0644\u060c \u062f\u0631\u0633\u062a \u0628\u0639\u062f \u0627\u0632 \u0628\u0644\u0648\u06a9 generator client \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">. . .\r\nmodel User {\r\n  id    Int     @default(autoincrement()) @id\r\n  email String  @unique\r\n  name  String?\r\n  posts Post[]\r\n}\r\n\r\nmodel Post {\r\n  id        Int     @default(autoincrement()) @id\r\n  title     String\r\n  content   String?\r\n  published Boolean @default(false)\r\n  author    User?   @relation(fields: [authorId], references: [id])\r\n  authorId  Int?\r\n}<\/pre>\n<p style=\"text-align: justify;\">\u0641\u0627\u06cc\u0644 \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u06cc\u062f \u0648 \u0627\u0632 \u0622\u0646 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f. \u0634\u0645\u0627 \u062f\u0648 \u0645\u062f\u0644 \u0628\u0647 \u0646\u0627\u0645\u200c\u0647\u0627\u06cc User \u0648 Post \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u062f. \u0647\u0631\u06cc\u06a9 \u0627\u0632 \u0627\u06cc\u0646\u200c\u0647\u0627 \u062a\u0639\u062f\u0627\u062f\u06cc \u0641\u06cc\u0644\u062f \u062f\u0627\u0631\u0646\u062f \u06a9\u0647 \u0648\u06cc\u0698\u06af\u06cc\u200c\u0647\u0627\u06cc \u0645\u062f\u0644 \u0631\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u0646\u062f. \u0645\u062f\u0644\u200c\u0647\u0627 \u0628\u0647 \u062c\u062f\u0627\u0648\u0644 \u067e\u0627\u06cc\u06af\u0627\u0647\u200c\u062f\u0627\u062f\u0647 \u0646\u06af\u0627\u0634\u062a \u0645\u06cc\u200c\u0634\u0648\u0646\u062f \u0648 \u0641\u06cc\u0644\u062f\u0647\u0627 \u0646\u0634\u0627\u0646\u200c\u062f\u0647\u0646\u062f\u0647 \u0633\u062a\u0648\u0646\u200c\u0647\u0627\u06cc \u062c\u062f\u0627\u06af\u0627\u0646\u0647 \u0647\u0633\u062a\u0646\u062f.<\/p>\n<p style=\"text-align: justify;\">\u0647\u0645\u0686\u0646\u06cc\u0646 \u062a\u0648\u062c\u0647 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0631\u0627\u0628\u0637\u0647\u200c\u0627\u06cc \u06cc\u06a9 \u0628\u0647 \u0686\u0646\u062f \u0628\u06cc\u0646 \u0627\u06cc\u0646 \u062f\u0648 \u0645\u062f\u0644 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f \u06a9\u0647 \u0641\u06cc\u0644\u062f\u0647\u0627\u06cc \u0645\u0631\u062a\u0628\u0637 posts \u0648 author \u0622\u0646 \u0631\u0627 \u0631\u0648\u06cc User \u0648 Post \u0645\u0634\u062e\u0635 \u06a9\u0631\u062f\u0647\u200c\u0627\u0646\u062f. \u0627\u06cc\u0646 \u06cc\u0639\u0646\u06cc \u06cc\u06a9 \u06a9\u0627\u0631\u0628\u0631 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0628\u0647 \u0628\u0633\u06cc\u0627\u0631\u06cc \u0627\u0632 \u067e\u0633\u062a\u200c\u0647\u0627 \u0645\u0631\u062a\u0628\u0637 \u0634\u0648\u062f. \u0628\u0627 \u0648\u062c\u0648\u062f \u0627\u06cc\u0646 \u0645\u062f\u0644\u200c\u0647\u0627\u060c \u0627\u06a9\u0646\u0648\u0646 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u062c\u062f\u0627\u0648\u0644 \u0645\u0631\u062a\u0628\u0637 \u0631\u0627 \u062f\u0631 \u067e\u0627\u06cc\u06af\u0627\u0647\u200c\u062f\u0627\u062f\u0647 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Prisma Migrate \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f. \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u062f\u0631 \u062a\u0631\u0645\u06cc\u0646\u0627\u0644 \u062e\u0648\u062f \u06a9\u0627\u0645\u0646\u062f \u0632\u06cc\u0631 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">$ npx prisma migrate dev --name \"init\" --preview-feature<\/pre>\n<p style=\"text-align: justify;\">\u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 SQL Migration \u062c\u062f\u06cc\u062f\u06cc \u062f\u0631 \u0641\u0627\u06cc\u0644 \u0633\u06cc\u0633\u062a\u0645 \u0627\u06cc\u062c\u0627\u062f \u0648 \u0622\u0646 \u0631\u0627 \u0628\u0647 \u067e\u0627\u06cc\u06af\u0627\u0647\u200c\u062f\u0627\u062f\u0647 \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u062f\u0631\u0627\u062f\u0627\u0645\u0647\u060c \u0634\u0645\u0627 \u0631\u0627 \u0628\u0627 \u062f\u0648 \u06af\u0632\u06cc\u0646\u0647 \u0627\u0631\u0627\u0626\u0647\u200c\u0634\u062f\u0647 \u062f\u0631 \u062f\u0633\u062a\u0648\u0631 \u0622\u0634\u0646\u0627 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645:<\/p>\n<ul style=\"text-align: justify;\">\n<li aria-level=\"1\"><b>&#8220;name &#8220;init&#8211;: <\/b>\u0646\u0627\u0645 Migration \u0631\u0627 \u0645\u0634\u062e\u0635 \u0645\u06cc\u200c\u06a9\u0646\u062f (\u0628\u0631\u0627\u06cc \u0646\u0627\u0645\u200c\u06af\u0630\u0627\u0631\u06cc \u0641\u0627\u06cc\u0644 Migration \u0627\u06cc\u062c\u0627\u062f\u0634\u062f\u0647 \u062f\u0631 \u0633\u06cc\u0633\u062a\u0645 \u0641\u0627\u06cc\u0644 \u0634\u0645\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f).<\/li>\n<li aria-level=\"1\"><b>preview-feature&#8211;:<\/b> \u0648\u062c\u0648\u062f \u0622\u0646 \u0636\u0631\u0648\u0631\u06cc \u0627\u0633\u062a\u061b \u0632\u06cc\u0631\u0627 Prisma Migrate \u062f\u0631 Preview \u0642\u0631\u0627\u0631 \u062f\u0627\u0631\u062f.<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">\u062e\u0631\u0648\u062c\u06cc \u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u0645\u0634\u0627\u0628\u0647 \u0632\u06cc\u0631 \u0627\u0633\u062a:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">Output\r\nEnvironment variables loaded from .env\r\nPrisma schema loaded from prisma\/schema.prisma\r\nDatasource \"db\": PostgreSQL database \"my-blog\", schema \"public\" at \"localhost:5432\"\r\n\r\nPostgreSQL database my-blog created at localhost:5432\r\n\r\nThe following migration(s) have been created and applied from new schema changes:\r\n\r\nmigrations\/\r\n  \u2514\u2500 20201209084626_init\/\r\n    \u2514\u2500 migration.sql\r\n\r\nRunning generate... (Use --skip-generate to skip the generators)\r\n\r\n\u2714 Generated Prisma Client (2.13.0) to .\/node_modules\/@prisma\/client in 75ms<\/pre>\n<p style=\"text-align: justify;\">\u0641\u0627\u06cc\u0644 SQL migration \u062f\u0631 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc prisma\/migrations\/20201209084626_init\/migration.sql \u0639\u0628\u0627\u0631\u0627\u062a \u0632\u06cc\u0631 \u0631\u0627 \u0634\u0627\u0645\u0644 \u0645\u06cc\u200c\u0634\u0648\u062f \u06a9\u0647 \u062f\u0631 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0627\u062c\u0631\u0627 \u0634\u062f\u0647 \u0627\u0633\u062a:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">-- CreateTable\r\nCREATE TABLE \"User\" (\r\n\"id\" SERIAL,\r\n    \"email\" TEXT NOT NULL,\r\n    \"name\" TEXT,\r\n\r\n    PRIMARY KEY (\"id\")\r\n);\r\n\r\n-- CreateTable\r\nCREATE TABLE \"Post\" (\r\n\"id\" SERIAL,\r\n    \"title\" TEXT NOT NULL,\r\n    \"content\" TEXT,\r\n    \"published\" BOOLEAN NOT NULL DEFAULT false,\r\n    \"authorId\" INTEGER,\r\n\r\n    PRIMARY KEY (\"id\")\r\n);\r\n\r\n-- CreateIndex\r\nCREATE UNIQUE INDEX \"User.email_unique\" ON \"User\"(\"email\");\r\n\r\n-- AddForeignKey\r\nALTER TABLE \"Post\" ADD FOREIGN KEY(\"authorId\")REFERENCES \"User\"(\"id\") ON DELETE SET NULL ON UPDATE CASCADE;<\/pre>\n<p style=\"text-align: justify;\">\u062a\u0648\u062c\u0647 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0627\u06af\u0631 \u06af\u0632\u06cc\u0646\u0647 create-only&#8211; \u0631\u0627 \u0628\u0647 \u06a9\u0627\u0645\u0646\u062f prisma migrate dev \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f\u060c \u0641\u0627\u06cc\u0644 SQL migration \u062a\u0648\u0644\u06cc\u062f\u0634\u062f\u0647 \u0631\u0627 \u0646\u06cc\u0632 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0633\u0641\u0627\u0631\u0634\u06cc\u200c\u0633\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n<p style=\"text-align: justify;\">\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647\u060c \u0645\u062f\u0644 \u062f\u0627\u062f\u0647 \u062e\u0648\u062f \u0631\u0627 \u062f\u0631 Prisma Schema \u062a\u0639\u0631\u06cc\u0641 \u0648 \u062c\u062f\u0627\u0648\u0644 \u067e\u0627\u06cc\u06af\u0627\u0647\u200c\u062f\u0627\u062f\u0647 \u0645\u0631\u062a\u0628\u0637 \u0631\u0627 \u0628\u0627 Prisma Migrate \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f\u06cc\u062f. \u062f\u0631 \u0645\u0631\u062d\u0644\u0647 \u0628\u0639\u062f\u060c Prisma Client \u0631\u0627 \u062f\u0631 \u067e\u0631\u0648\u0698\u0647\u200c\u062a\u0627\u0646 \u0646\u0635\u0628 \u062e\u0648\u0627\u0647\u06cc\u062f \u06a9\u0631\u062f \u062a\u0627 \u0628\u062a\u0648\u0627\u0646\u06cc\u062f \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0631\u0627 \u06a9\u0648\u0626\u0631\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"cta-section\">\n<p class=\"cta-description\">\u0628\u0631\u0627\u06cc \u0622\u0634\u0646\u0627\u06cc\u06cc \u06a9\u0627\u0645\u0644 \u0628\u0627 \u0648\u06cc\u0698\u06af\u06cc\u200c\u0647\u0627 \u0648 \u06a9\u0627\u0631\u0628\u0631\u062f\u200c\u0647\u0627\u06cc \u06a9\u06cc\u062a \u062a\u0648\u0633\u0639\u0647 \u0646\u0631\u0645\u200c\u0627\u0641\u0632\u0627\u0631 \u0645\u0642\u0627\u0644\u0647\u200c\u06cc \u0632\u06cc\u0631 \u0631\u0627 \u0628\u062e\u0648\u0627\u0646\u06cc\u062f.<\/p>\n<p><a class=\"cta-button \" href=\"https:\/\/parspack.com\/blog\/programming\/what-is-sdk\" target=\"_blank\" rel=\"noopener\">SDK \u0686\u06cc\u0633\u062a\u061f<\/a><\/p>\n<\/div>\n<h2 style=\"text-align: justify;\"><span style=\"color: #3366ff;\"><b>\u0645\u0631\u062d\u0644\u0647 \u0686\u0647\u0627\u0631\u0645. \u06a9\u0627\u0648\u0634 \u06a9\u0648\u0626\u0631\u06cc\u200c\u0647\u0627\u06cc Prisma Client \u062f\u0631 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a\u06cc \u0633\u0627\u062f\u0647<\/b><\/span><\/h2>\n<p style=\"text-align: justify;\">Prisma Client \u0633\u0627\u0632\u0646\u062f\u0647 \u06a9\u0648\u0626\u0631\u06cc \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u062e\u0648\u062f\u06a9\u0627\u0631 \u0648 \u0627\u06cc\u0645\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0627\u0632 \u0622\u0646 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0631\u0627\u06cc \u062e\u0648\u0627\u0646\u062f\u0646 \u0648 \u0646\u0648\u0634\u062a\u0646 \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0646\u0648\u06cc\u0633\u06cc \u062f\u0631 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0628\u0631\u0646\u0627\u0645\u0647 Node.js \u06cc\u0627 TypeScript \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f. \u0627\u0632 Prisma Client \u0628\u0631\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u067e\u0627\u06cc\u06af\u0627\u0647\u200c\u062f\u0627\u062f\u0647 \u062f\u0631 \u0645\u0633\u06cc\u0631\u0647\u0627\u06cc REST API \u062e\u0648\u062f\u060c \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646\u06cc ORM\u0647\u0627\u06cc \u0633\u0646\u062a\u06cc\u060c \u06a9\u0648\u0626\u0631\u06cc \u0633\u0627\u062f\u0647 SQL\u060c \u0644\u0627\u06cc\u0647\u200c\u0647\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc \u0633\u0641\u0627\u0631\u0634\u06cc \u06cc\u0627 \u0647\u0631 \u0631\u0648\u0634 \u062f\u06cc\u06af\u0631\u06cc \u0628\u0631\u0627\u06cc \u0645\u06a9\u0627\u0644\u0645\u0647 \u0628\u0627 \u067e\u0627\u06cc\u06af\u0627\u0647\u200c\u062f\u0627\u062f\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0647\u0631\u0647 \u0628\u0628\u0631\u06cc\u062f.<\/p>\n<p style=\"text-align: justify;\">\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647\u060c \u0628\u0627 \u0646\u062d\u0648\u0647 \u0646\u0635\u0628 Prisma Client \u0648 \u06a9\u0648\u0626\u0631\u06cc\u200c\u0647\u0627\u06cc\u06cc \u0622\u0634\u0646\u0627 \u0645\u06cc\u200c\u0634\u0648\u06cc\u062f \u06a9\u0647 \u0628\u0627 \u0622\u0646 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u06cc\u062f. \u0642\u0628\u0644 \u0627\u0632 \u0627\u062c\u0631\u0627\u06cc \u0645\u0633\u06cc\u0631\u0647\u0627 \u0628\u0631\u0627\u06cc REST API \u062e\u0648\u062f \u062f\u0631 \u0645\u0631\u0627\u062d\u0644 \u0628\u0639\u062f\u06cc\u060c \u0627\u0628\u062a\u062f\u0627 \u0628\u0631\u062e\u06cc \u0627\u0632 \u06a9\u0648\u0626\u0631\u06cc\u200c\u0647\u0627\u06cc Prisma Client \u0631\u0627 \u062f\u0631 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a\u06cc \u0633\u0627\u062f\u0647 \u0648 \u0627\u062c\u0631\u0627\u200c\u0634\u062f\u0646\u06cc \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n<p style=\"text-align: justify;\">\u0627\u0628\u062a\u062f\u0627 \u0628\u0627 \u0628\u0627\u0632\u06a9\u0631\u062f\u0646 \u062a\u0631\u0645\u06cc\u0646\u0627\u0644 \u0648 \u0646\u0635\u0628 \u067e\u06a9\u06cc\u062c npm Prisma Client \u062f\u0631 \u067e\u0631\u0648\u0698\u0647 \u062e\u0648\u062f\u060c Prisma Client \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">npm install @prisma\/client<\/pre>\n<p style=\"text-align: justify;\">\u0633\u067e\u0633\u060c \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u062c\u062f\u06cc\u062f\u06cc \u0628\u0647 \u0646\u0627\u0645 src \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u062d\u0627\u0648\u06cc \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u0645\u0646\u0628\u0639 \u0634\u0645\u0627 \u0628\u0627\u0634\u062f:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">mkdir src<\/pre>\n<p style=\"text-align: justify;\">\u062d\u0627\u0644\u0627 \u0641\u0627\u06cc\u0644 TypeScript \u062f\u0631 \u062f\u0627\u062e\u0644 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u062c\u062f\u06cc\u062f \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">nano src\/index.ts<\/pre>\n<p style=\"text-align: justify;\">\u062a\u0645\u0627\u0645\u06cc \u06a9\u0648\u0626\u0631\u06cc\u200c\u0647\u0627\u06cc Prisma Client \u0639\u0628\u0627\u0631\u0627\u062a\u06cc \u0631\u0627 \u0628\u0631\u200c\u0645\u06cc\u200c\u06af\u0631\u062f\u0627\u0646\u0646\u062f \u06a9\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u062f\u0631 \u06a9\u062f \u062e\u0648\u062f await \u06a9\u0646\u06cc\u062f. \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u06a9\u0627\u0631\u060c \u0628\u0627\u06cc\u062f \u06a9\u0648\u0626\u0631\u06cc\u200c\u0647\u0627 \u0631\u0627 \u062f\u0627\u062e\u0644 \u062a\u0627\u0628\u0639 async \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u06cc\u062f. \u0633\u067e\u0633\u060c boilerplate \u0632\u06cc\u0631 \u0631\u0627 \u0647\u0645\u0631\u0627\u0647 \u0628\u0627 \u062a\u0627\u0628\u0639 async\u00a0 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u062f\u0631 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0634\u0645\u0627 \u0627\u062c\u0631\u0627 \u0634\u062f\u0647 \u0627\u0633\u062a:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">import { PrismaClient } from '@prisma\/client'\r\n\r\nconst prisma = new PrismaClient()\r\n\r\nasync function main() {\r\n  \/\/ ... your Prisma Client queries will go here\r\n}\r\n\r\nmain()\r\n  .catch((e) =&gt; console.error(e))\r\n  .finally(async () =&gt; await prisma.disconnect())<\/pre>\n<p style=\"text-align: justify;\">\u062f\u0631\u0627\u062f\u0627\u0645\u0647\u060c \u0628\u0647\u200c\u200c\u0627\u062e\u062a\u0635\u0627\u0631 \u0627\u062c\u0632\u0627\u06cc boilerplate \u0631\u0627 \u0645\u0631\u0648\u0631 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f:<\/p>\n<p style=\"text-align: justify;\">1. \u0633\u0627\u0632\u0646\u062f\u0647 PrismaClient \u0631\u0627 \u0627\u0632 \u067e\u06a9\u06cc\u062c npm@prisma\/client \u06a9\u0647 \u0642\u0628\u0644\u0627\u064b \u0646\u0635\u0628 \u0634\u062f\u0647\u060c \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f.<\/p>\n<p style=\"text-align: justify;\">2. PrismaClient \u0631\u0627 \u0628\u0627 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u0633\u0627\u0632\u0646\u062f\u0647 \u0646\u0645\u0648\u0646\u0647\u200c\u0633\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f \u0648 \u0646\u0645\u0648\u0646\u0647\u200c\u0627\u06cc \u0628\u0647 \u0646\u0627\u0645 prisma \u0628\u0647\u200c\u062f\u0633\u062a \u0622\u0648\u0631\u06cc\u062f.<\/p>\n<p style=\"text-align: justify;\">3. \u062a\u0627\u0628\u0639 async \u0628\u0647 \u0646\u0627\u0645 main \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0648 \u062f\u0631 \u0622\u0646 \u0639\u0628\u0627\u0631\u062a Prisma Client \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<p style=\"text-align: justify;\">4. \u062a\u0627\u0628\u0639 main \u0631\u0627 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u06a9\u0646\u06cc\u062f. \u062f\u0631\u200c\u062d\u0627\u0644\u06cc\u200c\u06a9\u0647 \u0647\u0631\u06af\u0648\u0646\u0647 \u0627\u0633\u062a\u062b\u0646\u0627\u06cc \u0627\u062d\u062a\u0645\u0627\u0644\u06cc \u0631\u0627 \u062f\u0631 \u0646\u0638\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u06cc\u062f\u060c \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u06a9\u0647 Prisma Client \u0647\u0631\u06af\u0648\u0646\u0647 \u0627\u062a\u0635\u0627\u0644 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0628\u0627\u0632 \u0631\u0627 \u0628\u0627 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc prisma.disconnect \u0645\u06cc\u200c\u0628\u0646\u062f\u062f.<\/p>\n<p style=\"text-align: justify;\">\u0628\u0627 \u0642\u0631\u0627\u0631\u062f\u0627\u062f\u0646 \u062a\u0627\u0628\u0639 main\u060c \u06a9\u0648\u0626\u0631\u06cc\u200c\u0647\u0627\u06cc Prisma Client \u0631\u0627 \u0628\u0647 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f. \u0633\u067e\u0633\u060c index.ts \u0631\u0627 \u0628\u0647\u200c\u0634\u06a9\u0644 \u0632\u06cc\u0631 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">import { PrismaClient } from '@prisma\/client'\r\n\r\nconst prisma = new PrismaClient()\r\n\r\nasync function main() {\r\n  const newUser = await prisma.user.create({\r\n    data: {\r\n      name: 'Alice',\r\n      email: 'alice@prisma.io',\r\n      posts: {\r\n        create: {\r\n          title: 'Hello World',\r\n        },\r\n      },\r\n    },\r\n  })\r\n  console.log('Created new user: ', newUser)\r\n\r\n  const allUsers = await prisma.user.findMany({\r\n    include: { posts: true },\r\n  })\r\n  console.log('All users: ')\r\n  console.dir(allUsers, { depth: null })\r\n}\r\n\r\nmain()\r\n  .catch((e) =&gt; console.error(e))\r\n  .finally(async () =&gt; await prisma.disconnect())<\/pre>\n<p style=\"text-align: justify;\">\u062f\u0631 \u0627\u06cc\u0646 \u06a9\u062f\u060c \u0627\u0632 \u062f\u0648 \u06a9\u0648\u0626\u0631\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f:<\/p>\n<ul>\n<li style=\"text-align: justify;\" aria-level=\"1\"><b>create:<\/b> \u0631\u06a9\u0648\u0631\u062f User \u062c\u062f\u06cc\u062f\u06cc \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f. \u062a\u0648\u062c\u0647 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u062f\u0631\u0648\u0627\u0642\u0639 \u0627\u0632 nested write \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f\u061b \u06cc\u0639\u0646\u06cc \u0647\u0631 \u062f\u0648 \u0631\u06a9\u0648\u0631\u062f User \u0648 Post \u0631\u0627 \u062f\u0631 \u06cc\u06a9 \u06a9\u0648\u0626\u0631\u06cc \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f.<\/li>\n<li style=\"text-align: justify;\" aria-level=\"1\"><b>findMany:<\/b> \u062a\u0645\u0627\u0645 \u0631\u06a9\u0648\u0631\u062f\u0647\u0627\u06cc User \u0645\u0648\u062c\u0648\u062f \u0631\u0627 \u0627\u0632 \u067e\u0627\u06cc\u06af\u0627\u0647\u200c\u062f\u0627\u062f\u0647 \u0645\u06cc\u200c\u062e\u0648\u0627\u0646\u062f. \u0634\u0645\u0627 \u06af\u0632\u06cc\u0646\u0647 include \u0631\u0627 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u062f\u0647\u06cc\u062f \u06a9\u0647 \u0639\u0644\u0627\u0648\u0647\u200c\u0628\u0631\u0622\u0646 \u0631\u06a9\u0648\u0631\u062f Post \u0645\u0631\u0628\u0648\u0637 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0647\u0631 \u0631\u06a9\u0648\u0631\u062f User \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f. \u062d\u0627\u0644\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0631\u0627 \u0628\u0627 \u06a9\u0627\u0645\u0646\u062f \u0632\u06cc\u0631 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/li>\n<\/ul>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">npx ts-node src\/index.ts<\/pre>\n<p style=\"text-align: justify;\">\u062f\u0631\u0646\u0647\u0627\u06cc\u062a\u060c \u062e\u0631\u0648\u062c\u06cc \u0632\u06cc\u0631 \u0631\u0627 \u062f\u0631 \u062a\u0631\u0645\u06cc\u0646\u0627\u0644 \u062e\u0648\u062f \u062f\u0631\u06cc\u0627\u0641\u062a \u062e\u0648\u0627\u0647\u06cc\u062f \u06a9\u0631\u062f:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">Output\r\nCreated new user:  { id: 1, email: 'alice@prisma.io', name: 'Alice' }\r\n[\r\n  {\r\n    id: 1,\r\n    email: 'alice@prisma.io',\r\n    name: 'Alice',\r\n    posts: [\r\n      {\r\n        id: 1,\r\n        title: 'Hello World',\r\n        content: null,\r\n        published: false,\r\n        authorId: 1\r\n      }\r\n    ]\r\n  }<\/pre>\n<p style=\"text-align: justify;\"><b>\u0646\u06a9\u062a\u0647:<\/b> \u0627\u06af\u0631 \u0627\u0632 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f\u060c \u0628\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u062c\u062f\u0627\u0648\u0644 User \u0648 Post \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u062a\u0623\u06cc\u06cc\u062f \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u062f\u0627\u062f\u0647\u200c\u0647\u0627 \u0627\u06cc\u062c\u0627\u062f \u0634\u062f\u0647\u200c\u0627\u0646\u062f. \u0647\u0645\u0686\u0646\u06cc\u0646\u060c \u0628\u0627 \u0627\u062c\u0631\u0627\u06cc npx prisma studio \u062f\u0627\u062f\u0647\u200c\u0647\u0627 \u0631\u0627 \u062f\u0631 Prisma Studio \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u062c\u0633\u062a\u200c\u0648\u062c\u0648 \u06a9\u0646\u06cc\u062f.<\/p>\n<p style=\"text-align: justify;\">\u0627\u06a9\u0646\u0648\u0646 \u0627\u0632 Prisma Client \u0628\u0631\u0627\u06cc \u062e\u0648\u0627\u0646\u062f\u0646 \u0648 \u0646\u0648\u0634\u062a\u0646 \u062f\u0627\u062f\u0647\u200c\u0647\u0627 \u062f\u0631 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u062e\u0648\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u062f. \u062f\u0631 \u0645\u0631\u0627\u062d\u0644 \u0628\u0639\u062f\u06cc\u060c \u0631\u0648\u0634\u200c \u062c\u062f\u06cc\u062f\u06cc \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u0645\u0633\u06cc\u0631\u0647\u0627\u06cc REST API \u0628\u0647\u200c\u06a9\u0627\u0631 \u062e\u0648\u0627\u0647\u06cc\u062f \u0628\u0631\u062f. \u067e\u0633 \u0647\u0645\u0686\u0646\u0627\u0646 \u0628\u0627 \u0645\u0627 \u0647\u0645\u0631\u0627\u0647 \u0628\u0627\u0634\u06cc\u062f.<\/p>\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" data-loaded=\"true\" src=\"https:\/\/parspack.com\/blog\/wp-content\/uploads\/2022\/07\/build-a-rest-api-with-prisma-and-postgresql4.jpg\" class=\"wp-image-26242 size-full\" alt=\"\u0622\u0645\u0648\u0632\u0634 \u0633\u0627\u062e\u062a\u0646 REST API \u0628\u0627 Prisma\" title=\"\u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc RESET API\u00a0 \u0628\u0627 Prism \u0648 Postgresql \"       width=\"750\" height=\"450\" srcset=\"https:\/\/parspack.com\/blog\/wp-content\/uploads\/2022\/07\/build-a-rest-api-with-prisma-and-postgresql4.jpg 750w, https:\/\/parspack.com\/blog\/wp-content\/uploads\/2022\/07\/build-a-rest-api-with-prisma-and-postgresql4-300x180.jpg 300w\" sizes=\"auto, (max-width: 750px) 100vw, 750px\" \/><figcaption class=\"text-subtitle-5 text-gray-9 text-center mt-2\" >RESET API\u00a0 \u0631\u0627 \u0628\u0627 Prism \u0648 Postgresql \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f.<\/figcaption><\/figure>\n<h2 style=\"text-align: justify;\"><span style=\"color: #3366ff;\"><b>\u0645\u0631\u062d\u0644\u0647 \u067e\u0646\u062c\u0645. \u0627\u062c\u0631\u0627\u06cc \u0627\u0648\u0644\u06cc\u0646 \u0645\u0633\u06cc\u0631 REST API<\/b><\/span><\/h2>\n<p style=\"text-align: justify;\">\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647\u060c \u0627\u0628\u062a\u062f\u0627 \u0628\u0627\u06cc\u062f Express \u0631\u0627 \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u062e\u0648\u062f \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f. Express \u0686\u0647\u0627\u0631\u0686\u0648\u0628 \u0645\u062d\u0628\u0648\u0628 \u0648\u0628 \u0628\u0631\u0627\u06cc Node.js \u0627\u0633\u062a \u06a9\u0647 \u0627\u0632 \u0622\u0646 \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u0645\u0633\u06cc\u0631\u0647\u0627\u06cc REST API \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f. \u0627\u0648\u0644\u06cc\u0646 \u0645\u0633\u06cc\u0631\u06cc \u06a9\u0647 \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f\u060c \u0628\u0647 \u0634\u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f \u06a9\u0647 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062f\u0631\u062e\u0648\u0627\u0633\u062a GET\u060c \u0647\u0645\u0647 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0631\u0627 \u0627\u0632 API \u0645\u0646\u062a\u0642\u0644 \u06a9\u0646\u06cc\u062f. \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Prisma Client \u0627\u0632 \u067e\u0627\u06cc\u06af\u0627\u0647\u200c\u062f\u0627\u062f\u0647 \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u0645\u06cc\u200c\u0634\u0648\u0646\u062f.<\/p>\n<p style=\"text-align: justify;\">\u0646\u062e\u0633\u062a Express \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">npm install express<\/pre>\n<p style=\"text-align: justify;\">\u0627\u0632\u0622\u0646\u200c\u062c\u0627\u06a9\u0647 \u0627\u0632 TypeScript \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f \u0648 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u062f \u0645\u0648\u0627\u0631\u062f \u0645\u0631\u062a\u0628\u0637 \u0631\u0627 \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 development dependencies \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f\u060c \u0628\u0627\u06cc\u062f \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0647\u200c\u06a9\u0627\u0631 \u0628\u0628\u0631\u06cc\u062f:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">npm install @types\/express --save-dev<\/pre>\n<p style=\"text-align: justify;\">\u0628\u0627 \u0648\u062c\u0648\u062f \u0648\u0627\u0628\u0633\u062a\u06af\u06cc\u200c\u0647\u0627\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0631\u0646\u0627\u0645\u0647 Express \u062e\u0648\u062f \u0631\u0627 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f. \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u0628\u0627 \u0628\u0627\u0632\u200c\u06a9\u0631\u062f\u0646 \u0645\u062c\u062f\u062f \u0641\u0627\u06cc\u0644 \u0645\u0646\u0628\u0639 \u0627\u0635\u0644\u06cc \u062e\u0648\u062f \u0634\u0631\u0648\u0639 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">nano src\/index.ts<\/pre>\n<p style=\"text-align: justify;\">\u062d\u0627\u0644\u0627 \u062a\u0645\u0627\u0645 \u06a9\u062f\u0647\u0627\u06cc \u0645\u0648\u062c\u0648\u062f \u062f\u0631 index.ts \u0631\u0627 \u062d\u0630\u0641 \u0648 \u06a9\u062f \u0632\u06cc\u0631 \u0631\u0627 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u06a9\u0646\u06cc\u062f \u062a\u0627 REST API \u062e\u0648\u062f \u0631\u0627 \u0634\u0631\u0648\u0639 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">import { PrismaClient } from '@prisma\/client'\r\nimport express from 'express'\r\n\r\nconst prisma = new PrismaClient()\r\nconst app = express()\r\n\r\napp.use(express.json())\r\n\r\n\/\/ ... your REST API routes will go here\r\n\r\napp.listen(3000, () =&gt;\r\n  console.log('REST API server ready at: http:\/\/localhost:3000'),\r\n)<\/pre>\n<p style=\"text-align: justify;\">\u062f\u0631\u0627\u062f\u0627\u0645\u0647\u060c \u0634\u0645\u0627 \u0631\u0627 \u0628\u0627 \u0627\u06cc\u0646 \u06a9\u062f\u0647\u0627 \u0622\u0634\u0646\u0627 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f:<\/p>\n<p style=\"text-align: justify;\">1. PrismaClient \u0648 Express \u0631\u0627 \u0627\u0632 \u067e\u06a9\u06cc\u062c\u200c\u0647\u0627\u06cc \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 npm \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f.<\/p>\n<p style=\"text-align: justify;\">2. PrismaClient \u0631\u0627 \u0628\u0627 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u0633\u0627\u0632\u0646\u062f\u0647 \u0646\u0645\u0648\u0646\u0647\u200c\u0633\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f \u0648 \u0646\u0645\u0648\u0646\u0647\u200c\u0627\u06cc \u0628\u0647 \u0646\u0627\u0645 prisma \u0628\u0647\u200c\u062f\u0633\u062a \u0622\u0648\u0631\u06cc\u062f.<\/p>\n<p style=\"text-align: justify;\">3. \u0628\u0631\u0646\u0627\u0645\u0647 Express \u062e\u0648\u062f \u0631\u0627 \u0628\u0627 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc ()express \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f.<\/p>\n<p style=\"text-align: justify;\">4. \u0628\u0627 \u0627\u0636\u0627\u0641\u0647\u200c\u06a9\u0631\u062f\u0646 ()express.json \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u06a9\u0647 Express \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc JSON \u0631\u0627 \u0628\u0647\u200c\u062f\u0631\u0633\u062a\u06cc \u067e\u0631\u062f\u0627\u0632\u0634 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n<p style=\"text-align: justify;\">5. \u0633\u0631\u0648\u0631 \u0631\u0627 \u0631\u0648\u06cc \u067e\u0648\u0631\u062a 3000 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n<p style=\"text-align: justify;\">\u0627\u06a9\u0646\u0648\u0646\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0648\u0644\u06cc\u0646 \u0645\u0633\u06cc\u0631 \u062e\u0648\u062f \u0631\u0627 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f. \u0628\u06cc\u0646 \u062a\u0645\u0627\u0633\u200c\u0647\u0627\u06cc app.use \u0648 app.listen\u060c \u06a9\u062f \u0632\u06cc\u0631 \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">. . .\r\napp.use(express.json())\r\n\r\napp.get('\/users', async (req, res) =&gt; {\r\n  const users = await prisma.user.findMany()\r\n  res.json(users)\r\n})\r\n\r\napp.listen(3000, () =&gt;\r\nconsole.log('REST API server ready at: http:\/\/localhost:3000'),\r\n)<\/pre>\n<p style=\"text-align: justify;\">\u067e\u0633 \u0627\u0632 \u0627\u0636\u0627\u0641\u0647\u200c\u0634\u062f\u0646\u060c \u0641\u0627\u06cc\u0644\u062a\u0627\u0646 \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u06cc\u062f \u0648 \u0627\u0632 \u0622\u0646 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f. \u0633\u067e\u0633\u060c \u0648\u0628\u200c\u0633\u0631\u0648\u0631 \u0644\u0648\u06a9\u0627\u0644 \u062e\u0648\u062f \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">npx ts-node src\/index.ts<\/pre>\n<p style=\"text-align: justify;\">\u0627\u06a9\u0646\u0648\u0646\u060c \u062e\u0631\u0648\u062c\u06cc \u0632\u06cc\u0631 \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u062e\u0648\u0627\u0647\u06cc\u062f \u06a9\u0631\u062f:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">Output\r\nREST API server ready at: http:\/\/localhost:3000<\/pre>\n<p style=\"text-align: justify;\">\u0628\u0631\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u0645\u0633\u06cc\u0631 users\/\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0645\u0631\u0648\u0631\u06af\u0631 \u062e\u0648\u062f \u0631\u0627 \u0628\u0647 http:\/\/localhost:3000\/users \u06cc\u0627 \u0647\u0631 \u06a9\u0644\u0627\u06cc\u0646\u062a HTTP \u062f\u06cc\u06af\u0631\u06cc \u0647\u062f\u0627\u06cc\u062a \u06a9\u0646\u06cc\u062f.<\/p>\n<p style=\"text-align: justify;\"><b>\u0646\u06a9\u062a\u0647:<\/b> \u0627\u06af\u0631 \u062a\u0631\u062c\u06cc\u062d \u0645\u06cc\u200c\u062f\u0647\u06cc\u062f \u0627\u0632 \u06a9\u0644\u0627\u06cc\u0646\u062a HTTP \u0645\u0628\u062a\u0646\u06cc\u200c\u0628\u0631 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f\u060c \u0627\u0632 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646\u200c\u0647\u0627\u06cc\u06cc \u0645\u0627\u0646\u0646\u062f Postwoman \u06cc\u0627 Advanced REST Client \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0647\u0631\u0647 \u0628\u0628\u0631\u06cc\u062f.<\/p>\n<p style=\"text-align: justify;\">\u0628\u0631\u0627\u06cc \u062a\u0633\u062a \u0645\u0633\u06cc\u0631 \u062e\u0648\u062f\u060c \u067e\u0646\u062c\u0631\u0647 \u06cc\u0627 \u0628\u0631\u06af\u0647 \u062a\u0631\u0645\u06cc\u0646\u0627\u0644 \u062c\u062f\u06cc\u062f\u06cc \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f\u061b \u0628\u0647\u200c\u0637\u0648\u0631\u06cc\u200c\u06a9\u0647 \u0648\u0628\u200c\u0633\u0631\u0648\u0631 \u0645\u062d\u0644\u06cc \u0634\u0645\u0627 \u0628\u062a\u0648\u0627\u0646\u062f \u0628\u0647 \u06a9\u0627\u0631 \u062e\u0648\u062f \u0627\u062f\u0627\u0645\u0647 \u062f\u0647\u062f. \u062f\u0631\u0627\u062f\u0627\u0645\u0647\u060c \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">curl http:\/\/localhost:3000\/users<\/pre>\n<p style=\"text-align: justify;\">\u062d\u0627\u0644\u0627 \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u06cc\u200c\u0627\u06cc \u06a9\u0647 \u062f\u0631 \u0645\u0631\u062d\u0644\u0647 \u0642\u0628\u0644 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u062f\u060c \u062f\u0631\u06cc\u0627\u0641\u062a \u062e\u0648\u0627\u0647\u06cc\u062f \u06a9\u0631\u062f:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">Output\r\n[{\"id\":1,\"email\":\"alice@prisma.io\",\"name\":\"Alice\"}]<\/pre>\n<p style=\"text-align: justify;\">\u062a\u0648\u062c\u0647 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0627\u0632 \u0622\u0631\u0627\u06cc\u0647 posts \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0646\u0634\u062f\u0647 \u0627\u0633\u062a\u061b \u0632\u06cc\u0631\u0627 \u062f\u0631 \u0627\u062c\u0631\u0627\u06cc \u0645\u0633\u06cc\u0631 users\/\u060c \u06af\u0632\u06cc\u0646\u0647 include \u0631\u0627 \u0628\u0647 \u0641\u0631\u0627\u062e\u0648\u0627\u0646 findMany \u0645\u0646\u062a\u0642\u0644 \u0646\u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f.<\/p>\n<p style=\"text-align: justify;\">\u0627\u06a9\u0646\u0648\u0646 \u0627\u0648\u0644\u06cc\u0646 \u0645\u0633\u06cc\u0631 REST API \u062e\u0648\u062f \u0631\u0627 \u062f\u0631 users\/ \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u062f. \u062f\u0631 \u0645\u0631\u062d\u0644\u0647 \u0628\u0639\u062f\u06cc\u060c \u0645\u0633\u06cc\u0631\u0647\u0627\u06cc \u0628\u0627\u0642\u06cc\u200c\u0645\u0627\u0646\u062f\u0647 REST API \u0631\u0627 \u0628\u0631\u0627\u06cc \u0627\u0636\u0627\u0641\u0647\u200c\u06a9\u0631\u062f\u0646 \u0642\u0627\u0628\u0644\u06cc\u062a\u200c\u0647\u0627\u06cc \u0628\u06cc\u0634\u062a\u0631 API \u062e\u0648\u062f \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u062e\u0648\u0627\u0647\u06cc\u062f \u06a9\u0631\u062f.<\/p>\n<h2 style=\"text-align: justify;\"><span style=\"color: #3366ff;\"><b>\u0645\u0631\u062d\u0644\u0647 \u0634\u0634\u0645. \u0627\u062c\u0631\u0627\u06cc \u0645\u0633\u06cc\u0631\u0647\u0627\u06cc \u0628\u0627\u0642\u06cc\u200c\u0645\u0627\u0646\u062f\u0647 REST API<\/b><\/span><\/h2>\n<p style=\"text-align: justify;\">\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647\u060c \u0645\u0633\u06cc\u0631\u0647\u0627\u06cc \u0628\u0627\u0642\u06cc\u200c\u0645\u0627\u0646\u062f\u0647 REST API \u0631\u0627 \u0628\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0648\u0628\u0644\u0627\u06af\u200c\u0646\u0648\u06cc\u0633\u06cc \u062e\u0648\u062f \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u062e\u0648\u0627\u0647\u06cc\u062f \u06a9\u0631\u062f. \u062f\u0631 \u067e\u0627\u06cc\u0627\u0646\u060c \u0648\u0628\u200c\u0633\u0631\u0648\u0631 \u0634\u0645\u0627 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 GET \u060c\u200cPOST \u060c\u200cPUT \u0648 DELETE \u0631\u0627 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u062f\u0647\u062f. \u062f\u0631 \u062c\u062f\u0648\u0644 \u0632\u06cc\u0631\u060c \u0641\u0647\u0631\u0633\u062a \u0645\u0633\u06cc\u0631\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0628\u0631\u0627\u06cc \u0634\u0645\u0627 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a:<\/p>\n<table style=\"width: 99.6912%; height: 126px;\">\n<tbody>\n<tr style=\"height: 18px;\">\n<td style=\"text-align: center; height: 18px;\"><strong>\u062a\u0648\u0636\u06cc\u062d\u0627\u062a<\/strong><\/td>\n<td style=\"text-align: center; height: 18px;\"><strong>\u0631\u0648\u062a<\/strong><\/td>\n<td style=\"text-align: center; height: 18px;\"><strong>\u0631\u0648\u0634 HTTP<\/strong><\/td>\n<\/tr>\n<tr style=\"height: 18px;\">\n<td style=\"text-align: center; height: 18px;\">\u062a\u0645\u0627\u0645\u06cc \u067e\u0633\u062a\u200c\u0647\u0627\u06cc \u0645\u0646\u062a\u0634\u0631\u0634\u062f\u0647 \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/td>\n<td style=\"text-align: center; height: 18px;\">Feed\/<\/td>\n<td style=\"text-align: center; height: 18px;\">GET<\/td>\n<\/tr>\n<tr style=\"height: 18px;\">\n<td style=\"text-align: center; height: 18px;\">\u067e\u0633\u062a \u062e\u0627\u0635\u06cc \u0631\u0627 \u0628\u0627 ID \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/td>\n<td style=\"text-align: center; height: 18px;\">post\/:id\/<\/td>\n<td style=\"text-align: center; height: 18px;\">GET<\/td>\n<\/tr>\n<tr style=\"height: 18px;\">\n<td style=\"text-align: center; height: 18px;\">\u06a9\u0627\u0631\u0628\u0631\u06cc \u062c\u062f\u06cc\u062f \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/td>\n<td style=\"text-align: center; height: 18px;\">User\/<\/td>\n<td style=\"text-align: center; height: 18px;\">POST<\/td>\n<\/tr>\n<tr style=\"height: 18px;\">\n<td style=\"text-align: center; height: 18px;\">\u067e\u0633\u062a\u06cc \u062c\u062f\u06cc\u062f \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/td>\n<td style=\"text-align: center; height: 18px;\">Post\/<\/td>\n<td style=\"text-align: center; height: 18px;\">POST<\/td>\n<\/tr>\n<tr style=\"height: 18px;\">\n<td style=\"text-align: center; height: 18px;\">\u0641\u06cc\u0644\u062f published \u0631\u0648\u06cc true \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u062f\u0647\u062f.<\/td>\n<td style=\"text-align: center; height: 18px;\">post\/publish\/:id\/<\/td>\n<td style=\"text-align: center; height: 18px;\">PUT<\/td>\n<\/tr>\n<tr style=\"height: 18px;\">\n<td style=\"text-align: center; height: 18px;\">\u067e\u0633\u062a\u06cc \u0631\u0627 \u0628\u0631\u200c\u062d\u0633\u0628 ID \u062d\u0630\u0641 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/td>\n<td style=\"text-align: center; height: 18px;\">post\/:id<\/td>\n<td style=\"text-align: center; height: 18px;\">DELETE<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p style=\"text-align: justify;\">\u0627\u06a9\u0646\u0648\u0646\u060c \u0627\u0628\u062a\u062f\u0627 \u0645\u0633\u06cc\u0631\u0647\u0627\u06cc GET \u0628\u0627\u0642\u06cc\u200c\u0645\u0627\u0646\u062f\u0647 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f. \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u06a9\u0627\u0631\u060c index.ts \u0631\u0627 \u0628\u0627 \u06a9\u0627\u0645\u0646\u062f \u0632\u06cc\u0631 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">nano src\/index.ts<\/pre>\n<p style=\"text-align: justify;\">\u0633\u067e\u0633\u060c \u06a9\u062f \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0647\u200c\u062f\u0646\u0628\u0627\u0644 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0645\u0633\u06cc\u0631 users\/ \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">. . .\r\n\r\napp.get('\/feed', async (req, res) =&gt; {\r\n  const posts = await prisma.post.findMany({\r\n    where: { published: true },\r\n    include: { author: true }\r\n  })\r\n  res.json(posts)\r\n})\r\n\r\napp.get(`\/post\/:id`, async (req, res) =&gt; {\r\n  const { id } = req.params\r\n  const post = await prisma.post.findOne({\r\n    where: { id: Number(id) },\r\n  })\r\n  res.json(post)\r\n})\r\n\r\napp.listen(3000, () =&gt;\r\n  console.log('REST API server ready at: http:\/\/localhost:3000'),\r\n)<\/pre>\n<p style=\"text-align: justify;\">\u0641\u0627\u06cc\u0644 \u062e\u0648\u062f \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u06cc\u062f \u0648 \u0627\u0632 \u0622\u0646 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f. \u0627\u06cc\u0646 \u06a9\u062f \u0645\u0633\u06cc\u0631\u0647\u0627\u06cc API \u0631\u0627 \u0628\u0631\u0627\u06cc \u062f\u0648 \u062f\u0631\u062e\u0648\u0627\u0633\u062a GET \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f:<\/p>\n<ul style=\"text-align: justify;\">\n<li aria-level=\"1\"><b>feed\/: <\/b>\u0641\u0647\u0631\u0633\u062a\u06cc \u0627\u0632 \u067e\u0633\u062a\u200c\u0647\u0627\u06cc \u0645\u0646\u062a\u0634\u0631\u0634\u062f\u0647 \u0631\u0627 \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0627\u0646\u062f.<\/li>\n<li aria-level=\"1\"><b>post\/:id\/:<\/b> \u067e\u0633\u062a \u062e\u0627\u0635\u06cc \u0631\u0627 \u0628\u0627 ID \u0622\u0646 \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0627\u0646\u062f.<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">\u0627\u0632 Prisma Client \u062f\u0631 \u0647\u0631 \u062f\u0648 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f. \u062f\u0631 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0645\u0633\u06cc\u0631 feed\/\u060c \u06a9\u0648\u0626\u0631\u06cc\u200c\u0627\u06cc \u06a9\u0647 \u0628\u0627 \u0641\u06cc\u0644\u062a\u0631\u0647\u0627\u06cc Prisma Client \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f\u060c \u0628\u0631\u0627\u06cc \u062a\u0645\u0627\u0645 \u0631\u06a9\u0648\u0631\u062f\u0647\u0627\u06cc Post \u062f\u0631 \u0633\u062a\u0648\u0646 published \u062d\u0627\u0648\u06cc \u0645\u0642\u062f\u0627\u0631 true \u0627\u0633\u062a. \u0639\u0644\u0627\u0648\u0647\u200c\u0628\u0631\u200c\u0627\u06cc\u0646\u060c \u06a9\u0648\u0626\u0631\u06cc Prisma Client \u0627\u0632 include \u0628\u0647\u200c\u0645\u0646\u0638\u0648\u0631 \u062f\u0631\u06cc\u0627\u0641\u062a \u0627\u0637\u0644\u0627\u0639\u0627\u062a author \u0628\u0631\u0627\u06cc \u0647\u0631 \u067e\u0633\u062a \u0628\u0631\u06af\u0634\u062a\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u062f\u0631 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0645\u0633\u06cc\u0631 post\/:id\/\u060c \u0634\u0646\u0627\u0633\u0647\u200c\u0627\u06cc \u0631\u0627 \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0627\u0632 \u0645\u0633\u06cc\u0631 URL \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a \u062a\u0627 \u0631\u06a9\u0648\u0631\u062f Post \u062e\u0627\u0635\u06cc \u0631\u0627 \u0627\u0632 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0628\u062e\u0648\u0627\u0646\u06cc\u062f.<\/p>\n<p style=\"text-align: justify;\">\u0628\u0627 \u0641\u0634\u0627\u0631\u062f\u0627\u062f\u0646 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc CTRL + C \u0631\u0648\u06cc \u0635\u0641\u062d\u0647\u200c\u06a9\u0644\u06cc\u062f\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0633\u0631\u0648\u0631 \u0631\u0627 \u0645\u062a\u0648\u0642\u0641 \u06a9\u0646\u06cc\u062f. \u0633\u067e\u0633\u060c \u0633\u0631\u0648\u0631 \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06a9\u0627\u0645\u0646\u062f \u0632\u06cc\u0631 \u0645\u062c\u062f\u062f\u0627\u064b \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">npx ts-node src\/index.ts<\/pre>\n<p style=\"text-align: justify;\">\u0628\u0631\u0627\u06cc \u062a\u0633\u062a \u0645\u0633\u06cc\u0631 feed\/\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u062f\u0633\u062a\u0648\u0631 curl \u0632\u06cc\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">curl http:\/\/localhost:3000\/feed<\/pre>\n<p style=\"text-align: justify;\">\u062a\u0648\u062c\u0647 \u06a9\u0646\u06cc\u062f \u0627\u0632\u200c\u0622\u0646\u200c\u062c\u0627\u200c\u06a9\u0647 \u0647\u0646\u0648\u0632 \u0647\u06cc\u0686 \u067e\u0633\u062a\u06cc \u0645\u0646\u062a\u0634\u0631 \u0646\u0634\u062f\u0647\u060c \u067e\u0627\u0633\u062e \u0622\u0631\u0627\u06cc\u0647\u200c\u0627\u06cc \u062e\u0627\u0644\u06cc \u0627\u0633\u062a:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">Output\r\n\r\n[]<\/pre>\n<p style=\"text-align: justify;\">\u0628\u0631\u0627\u06cc \u062a\u0633\u062a \u0645\u0633\u06cc\u0631 post\/:id\/\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u06a9\u0627\u0645\u0646\u062f curl \u0632\u06cc\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">curl http:\/\/localhost:3000\/post\/1<\/pre>\n<p style=\"text-align: justify;\">\u0627\u06cc\u0646 \u06a9\u0627\u0645\u0646\u062f \u067e\u0633\u062a\u06cc \u0631\u0627 \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0627\u0646\u062f \u06a9\u0647 \u062f\u0631 \u0627\u0628\u062a\u062f\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f\u0647 \u0628\u0648\u062f\u06cc\u062f:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">Output\r\n{\"id\":1,\"title\":\"Hello World\",\"content\":null,\"published\":false,\"authorId\":1}<\/pre>\n<p style=\"text-align: justify;\">\u0633\u067e\u0633\u060c \u062f\u0648 \u0645\u0633\u06cc\u0631 POST \u0631\u0627 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f. \u06a9\u062f \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0647\u200c\u062f\u0646\u0628\u0627\u0644 \u0627\u062c\u0631\u0627\u06cc \u0633\u0647 \u0645\u0633\u06cc\u0631 GET \u0628\u0647 index.ts \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">. . .\r\n\r\napp.post(`\/user`, async (req, res) =&gt; {\r\n  const result = await prisma.user.create({\r\n    data: { ...req.body },\r\n  })\r\n  res.json(result)\r\n})\r\n\r\napp.post(`\/post`, async (req, res) =&gt; {\r\n  const { title, content, authorEmail } = req.body\r\n  const result = await prisma.post.create({\r\n    data: {\r\n      title,\r\n      content,\r\n      published: false,\r\n      author: { connect: { email: authorEmail } },\r\n    },\r\n  })\r\n  res.json(result)\r\n})\r\n\r\napp.listen(3000, () =&gt;\r\n  console.log('REST API server ready at: http:\/\/localhost:3000'),\r\n)<\/pre>\n<p style=\"text-align: justify;\">\u062f\u0631\u0646\u0647\u0627\u06cc\u062a\u060c \u0641\u0627\u06cc\u0644 \u062e\u0648\u062f \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u06cc\u062f \u0648 \u0627\u0632 \u0622\u0646 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f. \u0627\u06cc\u0646 \u06a9\u062f \u0645\u0633\u06cc\u0631\u0647\u0627\u06cc API \u0631\u0627 \u0628\u0631\u0627\u06cc \u062f\u0648 \u062f\u0631\u062e\u0648\u0627\u0633\u062a POST \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f:<\/p>\n<ul style=\"text-align: justify;\">\n<li aria-level=\"1\"><b>user\/: <\/b>\u06a9\u0627\u0631\u0628\u0631\u06cc \u062c\u062f\u06cc\u062f \u062f\u0631 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n<li aria-level=\"1\"><b>post\/:<\/b> \u067e\u0633\u062a\u06cc \u062c\u062f\u06cc\u062f \u062f\u0631 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">\u0645\u0627\u0646\u0646\u062f \u0642\u0628\u0644\u060c Prisma Client \u062f\u0631 \u0647\u0631 \u062f\u0648 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f. \u062f\u0631 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0645\u0633\u06cc\u0631 User\/\u060c \u0645\u0642\u0627\u062f\u06cc\u0631 \u0631\u0627 \u0627\u0632 \u0628\u062f\u0646\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a HTTP \u0628\u0647 \u06a9\u0648\u0626\u0631\u06cc Create \u062f\u0631 Prisma Client \u0645\u0646\u062a\u0642\u0644 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f\u061b \u0627\u0645\u0627 \u0645\u0633\u06cc\u0631 post\/ \u06a9\u0645\u06cc \u0628\u06cc\u0634\u062a\u0631 \u062f\u0631\u06af\u06cc\u0631 \u0627\u0633\u062a. \u062f\u0631 \u0627\u06cc\u0646\u200c\u062c\u0627 \u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0645\u0642\u0627\u062f\u06cc\u0631 \u0631\u0627 \u0627\u0632 \u0628\u062f\u0646\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a HTTP \u0645\u0646\u062a\u0642\u0644 \u06a9\u0646\u06cc\u062f. \u062f\u0631\u0639\u0648\u0636\u060c \u0627\u0628\u062a\u062f\u0627 \u0628\u0627\u06cc\u062f \u0622\u0646\u200c\u0647\u0627 \u0631\u0627 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u062f\u0633\u062a\u06cc \u0627\u0633\u062a\u062e\u0631\u0627\u062c \u0648 \u0633\u067e\u0633 \u0622\u0646\u200c\u0647\u0627 \u0631\u0627 \u0628\u0647 \u06a9\u0648\u0626\u0631\u06cc Prisma Client \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u06cc\u062f. \u062f\u0644\u06cc\u0644 \u0627\u06cc\u0646 \u0627\u0645\u0631 \u0622\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0633\u0627\u062e\u062a\u0627\u0631 JSON \u062f\u0631 \u0628\u062f\u0646\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0628\u0627 \u0633\u0627\u062e\u062a\u0627\u0631 \u0645\u0648\u0631\u062f\u0627\u0646\u062a\u0638\u0627\u0631 Prisma Client \u0645\u0637\u0627\u0628\u0642\u062a \u0646\u062f\u0627\u0631\u062f\u061b \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646\u060c \u0628\u0627\u06cc\u062f \u0633\u0627\u062e\u062a\u0627\u0631 \u0645\u0648\u0631\u062f\u200c\u0627\u0646\u062a\u0638\u0627\u0631 \u0631\u0627 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u062f\u0633\u062a\u06cc \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f.<\/p>\n<p style=\"text-align: justify;\">\u0628\u0627 \u0641\u0634\u0627\u0631\u062f\u0627\u062f\u0646 \u0647\u0645\u200c\u0632\u0645\u0627\u0646 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc CTRL + C \u062f\u0631 \u0635\u0641\u062d\u0647\u200c\u06a9\u0644\u06cc\u062f\u060c \u0633\u0631\u0648\u0631 \u0631\u0627 \u0645\u062a\u0648\u0642\u0641 \u0648 \u0645\u0633\u06cc\u0631\u0647\u0627\u06cc \u062c\u062f\u06cc\u062f \u0631\u0627 \u062a\u0633\u062a \u06a9\u0646\u06cc\u062f. \u0633\u067e\u0633\u060c \u0633\u0631\u0648\u0631 \u0631\u0627 \u0645\u062c\u062f\u062f\u0627\u064b \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0641\u0631\u0645\u0627\u0646 \u0632\u06cc\u0631 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">npx ts-node src\/index.ts<\/pre>\n<p style=\"text-align: justify;\">\u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u06a9\u0627\u0631\u0628\u0631 \u062c\u062f\u06cc\u062f \u0627\u0632\u0637\u0631\u06cc\u0642 \u0645\u0633\u06cc\u0631 User\/\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u062f\u0631\u062e\u0648\u0627\u0633\u062a POST \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0627 curl \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">curl -X POST -H \"Content-Type: application\/json\" -d '{\"name\":\"Bob\", \"email\":\"bob@prisma.io\"}' http:\/\/localhost:3000\/user<\/pre>\n<p style=\"text-align: justify;\">\u0627\u06cc\u0646 \u06a9\u0627\u0645\u0646\u062f \u06a9\u0627\u0631\u0628\u0631 \u062c\u062f\u06cc\u062f\u06cc \u062f\u0631 \u067e\u0627\u06cc\u06af\u0627\u0647\u200c\u062f\u0627\u062f\u0647 \u0627\u06cc\u062c\u0627\u062f \u0648 \u062e\u0631\u0648\u062c\u06cc \u0632\u06cc\u0631 \u0631\u0627 \u0686\u0627\u067e \u0645\u06cc\u200c\u06a9\u0646\u062f:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">Output\r\n{\"id\":2,\"email\":\"bob@prisma.io\",\"name\":\"Bob\"}<\/pre>\n<p style=\"text-align: justify;\">\u062f\u0631\u0646\u0647\u0627\u06cc\u062a\u060c \u0645\u0633\u06cc\u0631\u0647\u0627\u06cc PUT \u0648 DELETE \u0631\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f. \u0628\u0631\u0627\u06cc \u0627\u0646\u062c\u0627\u0645 \u0627\u06cc\u0646 \u06a9\u0627\u0631\u060c index.ts \u0631\u0627 \u0628\u0627 \u06a9\u0627\u0645\u0646\u062f \u0632\u06cc\u0631 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">nano src\/index.ts<\/pre>\n<p style=\"text-align: justify;\">\u067e\u0633 \u0627\u0632 \u0627\u062c\u0631\u0627\u06cc \u062f\u0648 \u0645\u0633\u06cc\u0631 POST\u060c \u06a9\u062f\u0647\u0627\u06cc \u0647\u0627\u06cc\u200c\u0644\u0627\u06cc\u062a\u200c\u0634\u062f\u0647 \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">. . .\r\n\r\napp.put('\/post\/publish\/:id', async (req, res) =&gt; {\r\n  const { id } = req.params\r\n  const post = await prisma.post.update({\r\n    where: { id: Number(id) },\r\n    data: { published: true },\r\n  })\r\n  res.json(post)\r\n})\r\n\r\napp.delete(`\/post\/:id`, async (req, res) =&gt; {\r\n  const { id } = req.params\r\n  const post = await prisma.post.delete({\r\n    where: { id: Number(id) },\r\n  })\r\n  res.json(post)\r\n})\r\n\r\napp.listen(3000, () =&gt;\r\n  console.log('REST API server ready at: http:\/\/localhost:3000'),\r\n)<\/pre>\n<p style=\"text-align: justify;\">\u0641\u0627\u06cc\u0644 \u062e\u0648\u062f \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u06cc\u062f \u0648 \u0627\u0632 \u0622\u0646 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f. \u0627\u06cc\u0646 \u06a9\u062f \u0645\u0633\u06cc\u0631\u0647\u0627\u06cc API \u0631\u0627 \u0628\u0631\u0627\u06cc \u06cc\u06a9 \u062f\u0631\u062e\u0648\u0627\u0633\u062a PUT \u0648 \u06cc\u06a9 \u062f\u0631\u062e\u0648\u0627\u0633\u062a DELETE \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f:<\/p>\n<ul style=\"text-align: justify;\">\n<li aria-level=\"1\"><b>post\/publish\/:id\/: <\/b>\u067e\u0633\u062a\u06cc \u0631\u0627 \u0628\u0627 ID \u062e\u0648\u062f \u0645\u0646\u062a\u0634\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n<li aria-level=\"1\"><b>post\/:id\/:<\/b> \u067e\u0633\u062a\u06cc \u0631\u0627 \u0628\u0627 ID \u0622\u0646 \u062d\u0630\u0641 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">\u0645\u062c\u062f\u062f\u0627\u064b \u0627\u0632 Prisma Client \u062f\u0631 \u0647\u0631 \u062f\u0648 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f. \u062f\u0631 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0645\u0633\u06cc\u0631 post\/publish\/:id\/\u060c \u0622\u06cc\u200c\u062f\u06cc \u067e\u0633\u062a\u06cc \u06a9\u0647 \u0642\u0631\u0627\u0631 \u0627\u0633\u062a \u0645\u0646\u062a\u0634\u0631 \u0634\u0648\u062f\u060c \u0627\u0632 URL \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u0648 \u0628\u0647 \u06a9\u0648\u0626\u0631\u06cc Update \u062f\u0631 Prisma Client \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u200c\u0634\u0648\u062f. \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0645\u0633\u06cc\u0631 post\/:id\/ \u0628\u0631\u0627\u06cc \u062d\u0630\u0641 \u067e\u0633\u062a \u062f\u0631 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0646\u06cc\u0632 \u0622\u06cc\u200c\u062f\u06cc \u067e\u0633\u062a \u0631\u0627 \u0627\u0632 URL \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u0648 \u0622\u0646 \u0631\u0627 \u0628\u0647 \u06a9\u0648\u0626\u0631\u06cc Delete \u062f\u0631 Prisma Client \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<p style=\"text-align: justify;\">\u0628\u0627 \u0641\u0634\u0627\u0631\u062f\u0627\u062f\u0646 \u0647\u0645\u200c\u0632\u0645\u0627\u0646 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc CTRL + C \u062f\u0631 \u0635\u0641\u062d\u0647\u200c\u06a9\u0644\u06cc\u062f\u060c \u0633\u0631\u0648\u0631 \u0631\u0627 \u0645\u062a\u0648\u0642\u0641 \u0648 \u0633\u067e\u0633 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06a9\u0627\u0645\u0646\u062f \u0632\u06cc\u0631\u060c \u0645\u062c\u062f\u062f\u0627\u064b \u0622\u0646 \u0631\u0627 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">npx ts-node src\/index.ts<\/pre>\n<p style=\"text-align: justify;\">\u0645\u0633\u06cc\u0631 PUT \u0631\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0627 \u062f\u0633\u062a\u0648\u0631 curl \u0632\u06cc\u0631 \u062a\u0633\u062a \u06a9\u0646\u06cc\u062f:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">curl -X PUT http:\/\/localhost:3000\/post\/publish\/2<\/pre>\n<p style=\"text-align: justify;\">\u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u067e\u0633\u062a \u0631\u0627 \u0628\u0627 \u0645\u0642\u062f\u0627\u0631 \u0622\u06cc\u200c\u062f\u06cc 2 \u0645\u0646\u062a\u0634\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0627\u06af\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a feed\/ \u0631\u0627 \u062f\u0648\u0628\u0627\u0631\u0647 \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u06cc\u062f\u060c \u0627\u06cc\u0646 \u067e\u0633\u062a \u0627\u06a9\u0646\u0648\u0646 \u062f\u0631 \u067e\u0627\u0633\u062e \u06af\u0646\u062c\u0627\u0646\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f. \u062f\u0631\u0646\u0647\u0627\u06cc\u062a\u060c \u0645\u0633\u06cc\u0631 DELETE \u0631\u0627 \u0628\u0627 \u062f\u0633\u062a\u0648\u0631 curl \u0632\u06cc\u0631 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u062a\u0633\u062a \u06a9\u0646\u06cc\u062f:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">curl -X DELETE http:\/\/localhost:3000\/post\/1<\/pre>\n<p style=\"text-align: justify;\">\u0628\u0627 \u0627\u06cc\u0646 \u06a9\u0627\u0631\u060c \u067e\u0633\u062a\u06cc \u0628\u0627 \u0645\u0642\u062f\u0627\u0631 \u0622\u06cc\u200c\u062f\u06cc 1 \u062d\u0630\u0641 \u0645\u06cc\u200c\u0634\u0648\u062f. \u0628\u0631\u0627\u06cc \u062a\u0623\u06cc\u06cc\u062f \u0627\u06cc\u0646\u06a9\u0647 \u067e\u0633\u062a \u0628\u0627 \u0627\u06cc\u0646 ID \u062d\u0630\u0641 \u0634\u062f\u0647 \u0627\u0633\u062a\u060c \u062f\u0631\u062e\u0648\u0627\u0633\u062a GET \u0631\u0627 \u0645\u062c\u062f\u062f\u0627\u064b \u0628\u0647 \u0645\u0633\u06cc\u0631 \/post\/1 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u06cc\u062f.<\/p>\n<p style=\"text-align: justify;\">\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647\u060c \u0645\u0633\u06cc\u0631\u0647\u0627\u06cc REST API \u0628\u0627\u0642\u06cc\u200c\u0645\u0627\u0646\u062f\u0647 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0648\u0628\u0644\u0627\u06af\u200c\u0646\u0648\u06cc\u0633\u06cc \u062e\u0648\u062f \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u06a9\u0631\u062f\u06cc\u062f. API \u0627\u06a9\u0646\u0648\u0646 \u0628\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 GET \u060c\u200cPOST \u060c\u200cPUT \u0648 DELETE \u067e\u0627\u0633\u062e \u0645\u06cc\u200c\u062f\u0647\u062f \u0648 \u0639\u0645\u0644\u06a9\u0631\u062f\u06cc \u0631\u0627 \u0628\u0631\u0627\u06cc \u062e\u0648\u0627\u0646\u062f\u0646 \u0648 \u0646\u0648\u0634\u062a\u0646 \u062f\u0627\u062f\u0647\u200c\u0647\u0627 \u062f\u0631 \u067e\u0627\u06cc\u06af\u0627\u0647\u200c\u062f\u0627\u062f\u0647 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<div class=\"cta-section\">\n<p class=\"cta-description\">\u062f\u0631 \u0645\u0642\u0627\u0644\u0647\u200c\u06cc \u0632\u06cc\u0631 \u0633\u0647 \u0633\u06cc\u0633\u062a\u0645\u200c \u0645\u062f\u06cc\u0631\u06cc\u062a \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0646\u0633\u0628\u06cc SQLite \u0648 MySQL \u0648 PostgreSQL \u0628\u0631\u0631\u0633\u06cc \u0648 \u0645\u0642\u0627\u06cc\u0633\u0647 \u0634\u062f\u0647\u200c\u0627\u0646\u062f. \u0622\u0646 \u0631\u0627 \u0627\u0632 \u062f\u0633\u062a \u0646\u062f\u0647\u06cc\u062f.<\/p>\n<p><a class=\"cta-button \" href=\"https:\/\/parspack.com\/blog\/hosting\/learn-server\/sqlite-vs-mysql-vs-postgresql-a-comparison-rdms\" target=\"_blank\" rel=\"noopener\">\u0645\u0642\u0627\u06cc\u0633\u0647 \u0633\u06cc\u0633\u062a\u0645\u200c\u0647\u0627\u06cc SQLite \u0648 MySQL \u0648 PostgreSQL<\/a><\/p>\n<\/div>\n<h2 style=\"text-align: justify;\"><span style=\"color: #3366ff;\"><b>\u0646\u062a\u06cc\u062c\u0647\u200c\u06af\u06cc\u0631\u06cc<\/b><\/span><\/h2>\n<p style=\"text-align: justify;\">\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647 \u0627\u0632 \u0648\u0628\u0644\u0627\u06af \u067e\u0627\u0631\u0633 \u067e\u06a9\u060c \u0634\u0645\u0627 \u0631\u0627 \u0628\u0627 \u0645\u0631\u0627\u062d\u0644 \u0633\u0627\u062e\u062a REST API \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Prisma \u0648 PostgreSQL \u0622\u0634\u0646\u0627 \u0633\u0627\u062e\u062a\u06cc\u0645. \u062f\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u06cc\u0646 \u0645\u0631\u0627\u062d\u0644\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0645\u0633\u06cc\u0631\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f\u060c \u062e\u0648\u0627\u0646\u062f\u0646\u060c \u0628\u0647\u200c\u0631\u0648\u0632\u200c\u0631\u0633\u0627\u0646\u06cc \u0648 \u062d\u0630\u0641 \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631 \u0648 \u067e\u0633\u062a \u0628\u0631\u0627\u06cc \u0646\u0645\u0648\u0646\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0648\u0628\u0644\u0627\u06af\u200c\u0646\u0648\u06cc\u0633\u06cc \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f. \u0627\u0645\u06cc\u062f\u0648\u0627\u0631\u06cc\u0645 \u06a9\u0647 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634 \u0646\u06cc\u0632 \u0628\u0631\u0627\u06cc\u062a\u0627\u0646 \u0645\u0641\u06cc\u062f \u0628\u0648\u062f\u0647 \u0628\u0627\u0634\u062f. \u0634\u0645\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0633\u0624\u0627\u0644\u0627\u062a \u062e\u0648\u062f \u0631\u0627 \u062f\u0631\u0628\u0627\u0631\u0647 \u0646\u062d\u0648\u0647 \u0633\u0627\u062e\u062a REST API \u0628\u0627 \u06a9\u0627\u0631\u0634\u0646\u0627\u0633\u0627\u0646 \u067e\u0627\u0631\u0633 \u067e\u06a9 \u0628\u0647\u200c\u0627\u0634\u062a\u0631\u0627\u06a9 \u0628\u06af\u0630\u0627\u0631\u06cc\u062f \u062a\u0627 \u062f\u0631 \u0633\u0631\u06cc\u0639\u200c\u062a\u0631\u06cc\u0646 \u0632\u0645\u0627\u0646 \u0645\u0645\u06a9\u0646 \u062c\u0648\u0627\u0628\u200c\u06af\u0648\u06cc \u0634\u0645\u0627 \u0628\u0627\u0634\u0646\u062f.<\/p>\n<h2><span style=\"color: #3366ff;\"><b>\u0633\u0624\u0627\u0644\u0627\u062a \u0645\u062a\u062f\u0627\u0648\u0644<\/b><\/span><\/h2>\n<h3 style=\"text-align: justify;\"><span style=\"color: #0000ff;\"><b>1. Prisma PostgreSQL \u0686\u06cc\u0633\u062a\u061f<\/b><\/span><\/h3>\n<p style=\"text-align: justify;\">Prisma \u0646\u0648\u0639\u06cc ORM \u0645\u062a\u0646\u200c\u0628\u0627\u0632 \u0628\u0631\u0627\u06cc Node. Js \u0648 TypeScript \u0627\u0633\u062a \u06a9\u0647 \u0634\u0627\u0645\u0644 \u0633\u0647 \u0627\u0628\u0632\u0627\u0631 \u0627\u0635\u0644\u06cc \u0627\u0633\u062a:<\/p>\n<ul>\n<li style=\"text-align: justify;\" aria-level=\"1\">Prisma Client : \u0633\u0627\u0632\u0646\u062f\u0647 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0648 \u0627\u06cc\u0645\u0646 \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a \u06a9\u0648\u0626\u0631\u06cc<\/li>\n<li style=\"text-align: justify;\" aria-level=\"1\">Prisma Migrate: \u0633\u06cc\u0633\u062a\u0645 \u0642\u062f\u0631\u062a\u0645\u0646\u062f \u0628\u0631\u0627\u06cc \u0645\u062f\u0644\u200c\u0633\u0627\u0632\u06cc \u0648 Migration \u062f\u0627\u062f\u0647\u200c\u0647\u0627<\/li>\n<li style=\"text-align: justify;\" aria-level=\"1\">Prisma Studio : \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc \u0628\u0631\u0627\u06cc \u0645\u0634\u0627\u0647\u062f\u0647 \u0648 \u0648\u06cc\u0631\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647\u200c\u0647\u0627 \u062f\u0631 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633<\/li>\n<\/ul>\n<h3 style=\"text-align: justify;\"><span style=\"color: #0000ff;\"><b>2. \u0686\u06af\u0648\u0646\u0647 Prisma Schema \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645\u061f<\/b><\/span><\/h3>\n<p style=\"text-align: justify;\">\u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 \u0627\u0648\u0644\u06cc\u0646 \u0642\u062f\u0645\u060c \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u067e\u0631\u0648\u0698\u0647 \u0627\u06cc\u062c\u0627\u062f \u0648 \u062f\u0631 \u0622\u0646 \u06a9\u0627\u0645\u0646\u062f\u0647\u0627\u06cc \u0632\u06cc\u0631 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">mkdir hello-prisma. $cd hello-prisma. ...\r\n\r\nnpx prisma.<\/pre>\n<p style=\"text-align: justify;\">\u0633\u067e\u0633 \u062f\u0631 \u0645\u0631\u062d\u0644\u0647 \u0628\u0639\u062f\u060c \u067e\u0631\u0648\u0698\u0647 Prisma \u062e\u0648\u062f \u0631\u0627 \u0628\u0627 \u0641\u0627\u06cc\u0644 Prisma Schema \u0627\u06cc\u062c\u0627\u062f \u0648 \u0628\u0627 \u06a9\u0627\u0645\u0646\u062f \u0632\u06cc\u0631 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">npx prisma init.<\/pre>\n<p><script type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@type\": \"FAQPage\",\n  \"mainEntity\": [{\n    \"@type\": \"Question\",\n    \"name\": \"Prisma PostgreSQL \u0686\u06cc\u0633\u062a\u061f\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"Prisma \u0646\u0648\u0639\u06cc ORM \u0645\u062a\u0646\u200c\u0628\u0627\u0632 \u0628\u0631\u0627\u06cc Node. Js \u0648 TypeScript \u0627\u0633\u062a \u06a9\u0647 \u0634\u0627\u0645\u0644 \u0633\u0647 \u0627\u0628\u0632\u0627\u0631 \u0627\u0635\u0644\u06cc \u0627\u0633\u062a:<\/p>\n<p>Prisma Client : \u0633\u0627\u0632\u0646\u062f\u0647 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0648 \u0627\u06cc\u0645\u0646 \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a \u06a9\u0648\u0626\u0631\u06cc\nPrisma Migrate: \u0633\u06cc\u0633\u062a\u0645 \u0642\u062f\u0631\u062a\u0645\u0646\u062f \u0628\u0631\u0627\u06cc \u0645\u062f\u0644\u200c\u0633\u0627\u0632\u06cc \u0648 Migration \u062f\u0627\u062f\u0647\u200c\u0647\u0627\nPrisma Studio : \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc \u0628\u0631\u0627\u06cc \u0645\u0634\u0627\u0647\u062f\u0647 \u0648 \u0648\u06cc\u0631\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647\u200c\u0647\u0627 \u062f\u0631 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633\"\n    }\n  },{\n    \"@type\": \"Question\",\n    \"name\": \"\u0686\u06af\u0648\u0646\u0647 Prisma Schema \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645\u061f\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"\u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 \u0627\u0648\u0644\u06cc\u0646 \u0642\u062f\u0645\u060c \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u067e\u0631\u0648\u0698\u0647 \u0627\u06cc\u062c\u0627\u062f \u0648 \u062f\u0631 \u0622\u0646 \u06a9\u0627\u0645\u0646\u062f\u0647\u0627\u06cc \u0632\u06cc\u0631 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n<p>mkdir hello-prisma. $cd hello-prisma. ...<\/p>\n<p>npx prisma.<\/p>\n<p>\u0633\u067e\u0633 \u062f\u0631 \u0645\u0631\u062d\u0644\u0647 \u0628\u0639\u062f\u060c \u067e\u0631\u0648\u0698\u0647 Prisma \u062e\u0648\u062f \u0631\u0627 \u0628\u0627 \u0641\u0627\u06cc\u0644 Prisma Schema \u0627\u06cc\u062c\u0627\u062f \u0648 \u0628\u0627 \u06a9\u0627\u0645\u0646\u062f \u0632\u06cc\u0631 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f:<\/p>\n<p>npx prisma init.\"\n    }\n  }]\n}\n<\/script><\/p>\n<h3><span style=\"color: #0000ff;\">\u0645\u0646\u0628\u0639:<\/span><\/h3>\n<p><a href=\"https:\/\/www.digitalocean.com\/community\/tutorials\/how-to-build-a-rest-api-with-prisma-and-postgresql\" target=\"_blank\" rel=\"noopener nofollow\">digitalocean<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u06a9\u0627\u0645\u0644\u0627\u064b \u0628\u0631 \u0645\u0631\u0627\u062d\u0644 \u0633\u0627\u062e\u062a REST API \u0628\u0627 Prisma \u0648 PostgreSQL \u0645\u0633\u0644\u0637 \u0634\u0648\u06cc\u062f\u060c \u0645\u0642\u0627\u0644\u0647\u200c\u06cc \u0632\u06cc\u0631 \u0631\u0627 \u0628\u062e\u0648\u0627\u0646\u06cc\u062f.<\/p>\n","protected":false},"author":71,"featured_media":35235,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[199],"tags":[],"class_list":["post-26199","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cms"],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/parspack.com\/blog\/wp-json\/wp\/v2\/posts\/26199","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/parspack.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/parspack.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/parspack.com\/blog\/wp-json\/wp\/v2\/users\/71"}],"replies":[{"embeddable":true,"href":"https:\/\/parspack.com\/blog\/wp-json\/wp\/v2\/comments?post=26199"}],"version-history":[{"count":4,"href":"https:\/\/parspack.com\/blog\/wp-json\/wp\/v2\/posts\/26199\/revisions"}],"predecessor-version":[{"id":54941,"href":"https:\/\/parspack.com\/blog\/wp-json\/wp\/v2\/posts\/26199\/revisions\/54941"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/parspack.com\/blog\/wp-json\/wp\/v2\/media\/35235"}],"wp:attachment":[{"href":"https:\/\/parspack.com\/blog\/wp-json\/wp\/v2\/media?parent=26199"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/parspack.com\/blog\/wp-json\/wp\/v2\/categories?post=26199"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/parspack.com\/blog\/wp-json\/wp\/v2\/tags?post=26199"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}