@rpcbase/db
v0.24.0
Published
`zI18nString()` (alias de `zLocalizedString()`) décrit une string localisée sous forme d’objet, avec des clés en *language codes* (BCP47) :
Readme
@rpcbase/db
LocalizedString / zI18nString()
zI18nString() (alias de zLocalizedString()) décrit une string localisée sous forme d’objet, avec des clés en language codes (BCP47) :
import { z } from "zod"
import { zI18nString, zodSchema } from "@rpcbase/db"
const ZPost = z.object({
title: zI18nString(), // { "en": "...", "fr": "...", "fr-FR": "..." }
})
const schema = zodSchema(ZPost)Côté Mongoose (important)
- Le champ est stocké comme un objet et typé
SchemaTypes.Mixed(pas unMap). - À la lecture, le getter Mongoose renvoie un objet “proxy” avec fallback automatique :
fr-FRretombe surfrsifr-FRn’existe pas.doc.title["fr-FR"]→ fallbackdoc.title.get("fr-FR")→ fallback (helper de lecture)doc.title.getExact("fr-FR")→ exact (sans fallback)
- À l’écriture, comme c’est du
Mixed, évite les mutations profondes silencieuses : préfère remplacer l’objet (doc.title = { ...doc.title, fr: "Salut" }) ou appelledoc.markModified("title").
