javascript - Hur man utökar ett Zod-objekt med ett annat objekt och väljer vissa poster?
Jag använder Zod, ett TypeScript-schema valideringsbibliotek, för att validera objekt i min applikation. Jag har ett scenario där jag behöver validera ett objekt med nästlade egenskaper och utvidga det med ett annat objekt samtidigt som jag bara väljer vissa poster från det andra objektet.
Här är vad jag försöker åstadkomma:
logValidation.pick({
level: true,
event: true,
userId: true,
ipAddress: true,
statusCode: true,
}).extend(validation.pick({
limit: true,
offset: true
}))
I koden ovan:
logValidation representerar schemat för att validera loggobjekt.
- Jag vill utöka
logValidationmed ett annat objekt som innehåller pagineringsparametrar (limit och offset). - Men jag vill
plockaendastlimitochoffsetfrån det andra objektet för att utökalogValidation.
Men den här koden fungerar inte som förväntat. Zods extend-metod verkar inte stödja att plocka ut vissa poster från det objekt som utökas.
Finns det ett sätt att uppnå denna funktionalitet med Zod? Jag
Svar #1
Du använder extend (som förväntar sig att du ger det ett objekt med egenskaper och kommer att skapa ett schema) när du borde använda merge (som förväntar sig att du ger det ett schema).
Se https://github.com/colinhacks/zod?tab=readme-ov-file#extend