Аз нав танзим кардани додаҳо
Ҳар навиштан бар зидди захира — ҳар POST, PUT, PATCH ва DELETE — ҳамчун лояи хурд болои
додаҳои сохташуда нигоҳ дошта мешавад, ҳеҷ гоҳ ҳамчун тағйирот ба худи раванди сохтан. Ин
маънояш он аст, ки бекор кардани ҳамаи онҳо як амали ягона, пурра ва фаврист: захираро аз нав
танзим кунед, ва ҳар тағйирот нест мешавад. Хониши баъдӣ ҳамон додаҳоеро, ки аз захираи комилан
навро бо ҳамон схема, seed ва count мегирифтед, аз нав месозад — байт ба байт, зеро ҳеҷ чиз дар
мантиқи сохтан ҳеҷ гоҳ ҷой иваз накардааст.
Чаро ин бехатар аст
Инро бо абзори API-и сохта, ки бар пойгоҳи воқеии додаҳои сатрҳои воридшуда такя мекунад, муқоиса кунед: "аз нав танзим" дар он ҷо одатан маънои иҷрои дубораи скрипти seed-ро дорад, ва ҳеҷ кафолате нест, ки он айнан ҳамон чизеро, ки пеш буд, аз нав созад, агар скрипт ё сарчашмаи тасодуфии он ҳатто каме тағйир ёфта бошад. Аз нав танзими MockLab чунин хатаре надорад, зеро асоси сохташуда аз ибтидо ҳеҷ гоҳ даст назада буд — навиштаҳои шумо комилан дар лояи алоҳидаи тағйиротҳо зиндагӣ мекарданд. Нест кардани он лоя маҳз аз нав танзим кардан аст, бидуни чизе, ки нодуруст аз нав сохта шавад.
Аз куҷо аз нав танзим кунед
Аз нав танзим кардан амали соҳиби лоиҳа аст, на чизе ки истифодабарандаи API-и умумӣ метавонад
даъват кунад — он паси сеанси дашборди шумо мезиста, на эндпоинти /m/...-е, ки барномаи шумо
даъват мекунад. Аз саҳифаи захираи худ дар дашборд, амали аз нав танзим карданро истифода баред,
то ҳамаи тағйиротҳои он захираро тоза кунед. Қадами тасдиқе, ки скрипт карда шавад, вуҷуд надорад
ва аз нав танзими қисмӣ вуҷуд надорад: он бо мақсад ҳама-ё-ҳеҷ аст, зеро аз нав танзими интихобӣ
бояд "ин таҳрири қасдан аст, ки мехоҳам нигоҳ дорам"-ро аз "ин додаҳои санҷишӣ буд" фарқ кунад —
фарқияте, ки API ҳеҷ роҳи донистанашро надорад.
Воқеан чӣ рӯй медиҳад
Дар зери сатҳ, аз нав танзим кардан ҳар сатри тағйироти мутааллиқ ба захираро нест мекунад ва
версияи дохилии додаҳои онро баланд мекунад — ҳамон рақами версия, ки кэши дар хотира буда,
хонишҳои шуморо хизмат мерасонад, бо он калидбандӣ мешавад. Маҳз ҳамон як зиёдшавӣ аст, ки ҳар
саҳифаи кэшшудаи он захираро дар ҳар просесси сервер беэътибор мекунад; GET-и навбатӣ, аз ҳар
ҷо, аз нав месозад ва аз лаваҳи тоза аз нав кэш мекунад.
Кай ин лозим мешавад
Аз нав танзим кардан бештар дар миёнаи рушд муфид аст: шумо тавассути UI-и барномаи худ бо захира сарукор доштаед — сабтҳои санҷишӣ сохтаед, чандтоашро нест кардаед, нархҳоро барои санҷидани як ҳолати канорӣ тағйир додаед — ва мехоҳед пеш аз намоиш додан, санҷидан ё супоридани эндпоинт ба каси дигар боз ба асоси тоза баргардед. Азбаски сохтан детерминистӣ аст, ҳар кас, ки баъдтар ба захираи аз нав танзимшуда муроҷиат мекунад, айнан ҳамон додаҳоро мебинад, ки навиштани санҷишҳо ё ҳуҷҷатҳоро бар зидди арзишҳои интизории собит осонтар мекунад.
Хондани додаҳо пас аз аз нав танзим кардан
Хондани захира пас аз аз нав танзим кардан айнан ҳамон эндпоинтро ҳамеша истифода мебарад — ҳеҷ чиз дар шакли URL ё ҷавоб тағйир намеёбад:
const response = await fetch("https://mocklab.dev/m/demo7k2m9x/products");
const products = await response.json();
// Identical to a fresh resource with the same schema, seed and count.import { useQuery, useQueryClient } from "@tanstack/react-query";
function ProductList() {
const queryClient = useQueryClient();
const { data: products } = useQuery({
queryKey: ["products"],
queryFn: () => fetch("https://mocklab.dev/m/demo7k2m9x/products").then((res) => res.json()),
});
// After resetting from the dashboard, invalidate the cached query so the
// next render reflects the clean baseline instead of stale overridden data.
const refetchAfterReset = () => queryClient.invalidateQueries({ queryKey: ["products"] });
return (
<>
<button onClick={refetchAfterReset}>Refresh</button>
<ul>
{products?.map((p) => (
<li key={p.id}>{p.title}</li>
))}
</ul>
</>
);
}