Схема жана талаа түрлөрү
Ресурстун схемасы — талаалардын иреттелген тизмеси. Ар бир талаа nameге, typeке жана,
түрүнө жараша, кичине options топтомуна ээ. Талаанын иреттелиши бир конкреттүү себептен
маанилүү: template талаасы так ошол эле тизмедеги мурда турган талааны гана шилтей алат — төмөн
жактагы template сабын караңыз.
Талаанын аттары кичине тамга менен башталышы жана тамгалардан, сандардан жана астыңкы сызыктан
гана турушу керек. Бир ресурс эң көбү 30 талаага ээ боло алат. Ар бир генерацияланган жазуу
автоматтык түрдө idге да ээ болот — аны эч качан өзүңүз аныктабайсыз, жана id деп аталган
талааны берсеңиз, ал чыныгысынын пайдасына унчукпай эске алынбайт.
Справочник таблицасы
| Түрү | Опциялары | Мисал жообу |
|---|---|---|
index | — | 0, 1, 2, … (жазуунун орду) |
uuid | — | "a1b2c3d4-5e6f-7890-abcd-ef1234567890" |
firstName | — | "Amelia" |
lastName | — | "Nguyen" |
fullName | — | "Amelia Nguyen" |
email | — | "[email protected]" |
phone | — | "+1 555 019 2231" |
avatar | — | avatar сүрөтүнүн URL'у |
image | width, height (экөө тең милдеттүү эмес) | берилген өлчөмдөгү сүрөттүн URL'у |
city | — | "Tashkent" |
country | — | "Uzbekistan" |
street | — | "482 Birchwood Ave" |
word | — | "vivid" |
sentence | min, max сөз саны (милдеттүү эмес) | "The quiet fox waited by the door." |
paragraph | min, max сүйлөм саны (милдеттүү эмес) | lorem-стилиндеги кыска абзац |
number | min, max (демейки 0–1000) | 742 |
price | min, max, symbol (демейки белги жок) | "48.19", же symbol: "$" менен "$48.19" |
boolean | true болуу probabilityси, 0–1 | true |
date | from, to ISO саптары (демейки 2015–2025) | "2021-06-14T09:32:00.000Z" |
enum | values — бош эмес сап массиви | valuesден тандалган бир маани |
static | value — каалаган туруктуу JSON мааниси | ар дайым так value |
template | template — {{field}} плейсхолдерлери бар сап | мурдагы талаалардан курулган сап |
template түрү
template — өз маанисин генерациялоонун ордуна башка талааларды окуй турган жалгыз түр. Анын
template опциясы жөнөкөй сап; ал {{fieldName}} дегенди камтыган каалаган жеринде, ошол
плейсхолдер fieldName деп аталган талаанын так ушул жазуу үчүн мурда генерациялаган мааниси
менен алмаштырылат. Бул схемада мурда аныкталган талаалар үчүн гана иштейт — template али
иштеп чыга элек талааны шилтей албайт. Кеңири колдонуу: схеманын мурдагы жеринде firstName
талаасы жана lastName талаасы бар болсо, кийинки email талаасынын ордуна аты менен дал келген
email'ди сактоо үчүн "{{firstName}}.{{lastName}}@example.com" менен template талаасын
колдонсоңуз болот, тиешеси жок email генерациялоонун ордуна.
Детерминизм, кыскача
Ар бир талаа түрү жазуудагы башка ар бир талаа сыяктуу так ошол эле себилген (seeded) псевдококулдук ырааттуулуктан алат, ошондуктан так ошол эле схема, seed жана жазуу индекси ар дайым так ошол эле жазууну, талаа боюнча талаа, чыгарат. Механизмдин толук сүрөттөлүшү үчүн Генерация кантип иштейт барагын караңыз; бул жерде маанилүү нерсе — талаанын опцияларын өзгөртүү ошол талаанын келечектеги жообун өзгөртөт, бирок схемадагы талааларды кайра иреттөө же башка жерге талаа кошуу учурдагы жазуулардын id'лерин аралаштырбайт — id'лер схеманын калган бөлүгүнөн көз каранды эмес генерацияланат.
Ресурстун маалыматын алуу
Мунун баары маалыматты кантип окуганыңызды өзгөртпөйт — ар бир ресурс, талаалары кандай болбосун, так ошол эле жол менен окулат:
const response = await fetch("https://mocklab.dev/m/demo7k2m9x/products");
const products = await response.json();import { useQuery } from "@tanstack/react-query";
function ProductList() {
const { data: products } = useQuery({
queryKey: ["products"],
queryFn: () => fetch("https://mocklab.dev/m/demo7k2m9x/products").then((res) => res.json()),
});
return <pre>{JSON.stringify(products, null, 2)}</pre>;
}