рдУрдо-рдпрдо-рдпрдо рдФрд░ рдбреЗрдЯрд╛ рд╕рддреНрдпрд╛рдкрди

рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░! рдЪрд▓реЛ рдбреЗрдЯрд╛ рд╕рддреНрдпрд╛рдкрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝реА рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВред рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ, рдХреНрдпрд╛ рдЬрдЯрд┐рд▓ рд╣реИ рдФрд░ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП? рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдм рдХреБрдЫ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдЕрдзрд┐рдХрддрдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдирдкреБрдЯ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╣рддрд╛ рд╣реИред рдпрд╣реА рд╣реИ, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдПрдХ рджрд░реНрдЬрди рдирд┐рдпрдорд┐рдд рдФрд░ рд╕рдм рдХреБрдЫ рдлреЗрдВрдХрдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ, рд╡рд┐рд╖рдп рдХреЛ рдмрдВрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди ... рд╣рдореЗрд╢рд╛ рд╕реЗ рджреВрд░, рдФрд░ рд╡реЗрдм рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд▓рдЧрднрдЧ рдХрднреА рдирд╣реАрдВ, рдкреВрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдПрдХ рд╣реА рдХреЛрдб рдЖрдзрд╛рд░ рдореЗрдВ рд╣реЛрддреА рд╣реИ рдФрд░ рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИред рдРрд╕реЗ рдХреЛрдб рдЖрдзрд╛рд░реЛрдВ рдХреЗ рдЬрдВрдХреНрд╢рди рдкрд░, рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИрдВ рдЬрдм рдкреНрд░рддреАрдХреНрд╖рд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдХреЗ рдЕрдиреБрд░реВрдк рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ рдФрд░ рдпрд╣рд╛рдВ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрдм рд╕рд╣рд╛рдпрдХ рдирд╣реАрдВ рд╣реИред рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг:


  • рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдХреНрд▓рд╛рдЗрдВрдЯ рд╣рд┐рд╕реНрд╕рд╛ рдПрдкреАрдЖрдИ рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдПрдкреАрдЖрдИ рдЕрдЪрд╛рдирдХ рдФрд░ рдХрднреА-рдХрднреА рдмрд┐рдирд╛ рдиреЛрдЯрд┐рд╕ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░реА рдмрд╛рдд, "рд╕рд░реНрд╡рд░ рд▓реЛрдЧ" рдЦреБрдж рдХрднреА-рдХрднреА рдпрд╣ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЙрдирдХрд╛ рдПрдкреАрдЖрдИ рдХреНрдпрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд┐рд╕реА рдХреНрд╖реЗрддреНрд░ рдореЗрдВ, рдЧрд╛рд░рдВрдЯреАрдХреГрдд рд╕рд░рдгреА рдХреЗ рдмрдЬрд╛рдп, рднрд▓реЗ рд╣реА рдЦрд╛рд▓реА рд╣реЛ, рдкреВрд░реНрдгрд┐рдорд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред null рджрд┐рдпрд╛ рдЬрд╛рдПред рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдбреЗрдЯрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╕рдордп, рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рд▓рдЧрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдкрддрд╛ рд╣реИ рдХрд┐ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рд╣реИ рдФрд░ рдЕрдЧрд░ рдХреБрдЫ рдЧрд▓рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕реНрд░реЛрдд рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдПрдХ рд╕рдВрджреЗрд╢ рдХреЛ рддреБрд░рдВрдд рджреЗрдЦрдиреЗ рдХреЗ рдмрдЬрд╛рдп рдпрд╣ рдПрдХ рд╕реБрдЦрдж рдмрд╛рдд рд╣реИ рдХрд┐ рдПрдХ рдЕрд╕рдВрдЧрдд рдмрдЧ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрдард╛ рд▓рд┐рдпрд╛ рдЬрд╛рдП рдЬрд╣рд╛рдВ рдпрд╣ рд╡реНрдпреВ рд▓реЗрдпрд░ рдореЗрдВ рдмрд╛рд╣рд░ рд╣реЛ рдЧрдпрд╛ рд╣реИред (рдФрд░ рдпрд╣ рддреБрд░рдВрдд рджреЗрдЦрд╛ рдЬрд╛рдП рддреЛ рдЕрдЪреНрдЫрд╛ рд╣реИ) рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЕрдм рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдорд╛рдзрд╛рди ( 1 , 2 ) рд╣реИрдВ рдЬреЛ рд╕рд░реНрд╡рд░ рд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рддрдХ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рдореИрдВрдиреЗ рдЕрднреА рддрдХ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╣реБрдд рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдпрд╣ рднрд╡рд┐рд╖реНрдп рд╣реИред
  • рд░рд┐рд╡рд░реНрд╕ рд╕реНрдерд┐рддрд┐ рддрдм рд╣реЛрддреА рд╣реИ рдЬрдм рд╕рд░реНрд╡рд░ рдЕрдкреЗрдХреНрд╖рд┐рдд рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдкреВрд░рд╛ рдирд╣реАрдВ рдХрд░рдиреЗ рдкрд░ рдЕрдиреБрд░реЛрдз рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рднреЗрдЬреЗ рдЧрдП рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рддреБрд░рдВрдд рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╡рд┐рд╡рд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдРрд╕рд╛ рдХрд░рдирд╛ рдХреНрдпреЛрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред
  • рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЗрд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдбреЗрдЯрд╛ рдХрд╛ рд╕рддреНрдпрд╛рдкрди рднреА рд╢рд╛рдирджрд╛рд░ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдореЗрд░реА рдПрдХ рдмрд╛рдЗрдХ рдореЗрдВ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рд╣реИ: MaraquiaORM # рдорд╛рдиреНрдпрддрд╛ ред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЙрджрд╛рд╣рд░рдг рдХрд╛рдлреА рдареЛрд╕ рд╣реИрдВ рдФрд░ рдЕрдм рдРрд╕рд╛ рдХреЛрдИ рдПрд╣рд╕рд╛рд╕ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдк рд╕рд░рд▓ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдирдкреБрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдЬрдЯрд┐рд▓ рдХреЗ рд╕рддреНрдпрд╛рдкрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ, рдЬреЛ рдЖрдорддреМрд░ рдкрд░ рдбреЗрдЯрд╛ рдХреЗ рдХрдИ рд╕реНрддрд░реЛрдВ рдкрд░ рдирд┐рд╣рд┐рдд рд╣реИред рдпрд╣рд╛рдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХрд░ рд░рд╣реЗ рд╣реИрдВ! рдпрд╣ рд╕рд┐рд░реНрдл рдЗрддрдирд╛ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдкрд┐рдЫрд▓реЗ 10 рд╡рд░реНрд╖реЛрдВ рдореЗрдВ, рд╣рд░ рдмрд╛рд░ рдЬрдм рдореИрдВ рдПрдХ рдирдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдореИрдВ рдЗрд╕рдореЗрдВ рдПрдХ рдФрд░ рдРрд╕реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВ, рдЬреЛ рдЗрд╕реЗ рдореЗрд░реА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рдЕрдиреБрд░реВрдк рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рддрд╛ рд╣реИред рдФрд░ рд╣рд░ рдмрд╛рд░ рдХреБрдЫ рдЧрд▓рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдХрднреА-рдХрднреА рд╕рдХреНрд░рд┐рдп рд╡рд┐рдХрд╛рд╕ рдХреЗ рдмреАрдЪ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рд╖рдп рдХреЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИред рдореИрдВ рдЙрди рд╕рднреА рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛, рдЬрд┐рдирдХрд╛ рдореИрдВрдиреЗ рдЕрдзреНрдпрдпрди рдХрд┐рдпрд╛ рдерд╛, рдореИрдВ рдХреЗрд╡рд▓ рд╡рд░реНрддрдорд╛рди рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рдЧрдП рд▓реЛрдЧреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрд╣реВрдВрдЧрд╛ред


рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдВрдЪ


Github


рдЫреЛрдЯрд╛ рдФрд░ рдХрд╛рдлреА рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпред рд╕рд░реНрдХрд┐рдЯ рдХреЛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдорд▓реНрдЯреА-рд▓рд╛рдЗрди рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдХрд╛рдлреА рдЬрдЯрд┐рд▓ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:


 `{ ID: String, creator: { fname: String | Null, mname: String | Null, lname: String | Null, email: [String] } | Undefined, sender: Maybe { name: String, email: String }, type: Number, subject: String, ... }` 

рдХрд╛рдлреА рдЧрдВрднреАрд░ рдХрдорд┐рдпрд╛рдВ рд╣реИрдВ:


  • рдЖрдИрдбреАрдИ рд╕реНрдХреАрдорд╛ рдХреЗ рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдорджрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рддреЗ рд╕рдордп рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкрд░реЗрд╢рд╛рди рдерд╛ред
  • рд▓рдЧрднрдЧ рдмреЗрдХрд╛рд░ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ред рдореИрдВрдиреЗ рдПрдХ рд╡рд░реНрд╖ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рддрдХ рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рд╢рд╛рдпрдж рдХреБрдЫ рдмрджрд▓ рдЧрдпрд╛ рд╣реИ (рдХреЛрдб рд╕реЗ рджреЗрдЦрддреЗ рд╣реБрдП, рдирд╣реАрдВ)ред рд╕рдВрджреЗрд╢ "рдЕрдкреЗрдХреНрд╖рд┐рдд рд╕реНрдЯреНрд░рд┐рдВрдЧ, рдкреНрд░рд╛рдкреНрдд рдЕрд╢рдХреНрдд" рдХреА рд╢реИрд▓реА рдореЗрдВ рдереЗред рдЕрдм рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП, рдЖрдкрдХреЗ рдкрд╛рд╕ 200 рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рдгреА рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рддрд╛рд░ рдХреЗ рд╕рд╛рде рдлрд╝реАрд▓реНрдб рд╣реИрдВ, рдФрд░ рдХреЗрд╡рд▓ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рд╕реЗ рдПрдХ рдлрд╝реАрд▓реНрдб рдЯреВрдЯ рдЧрдпрд╛ рд╣реИред рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдХреЛ рдХреИрд╕реЗ рдЦреЛрдЬреЗрдВ? рд╕рднреА 200 рдЖрдЗрдЯрдо рджреЗрдЦреЗрдВ? рдореИрдВрдиреЗ рдмрд╣реБрдд рдмрд╛рд░ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕рдиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореЗрд░рд╛ рдЬреАрд╡рди рддреЛрдбрд╝ рджрд┐рдпрд╛, рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреА рдЫрд╛рдк рдХреЛ рдмрд░реНрдмрд╛рдж рдХрд░ рджрд┐рдпрд╛ред рдЖрдорддреМрд░ рдкрд░ рдореИрдВ рдпрд╣ рдЬрд╛рдирдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рдХрд┐ рд╡рд╣рд╛рдВ рдХреНрдпрд╛ рдЕрдкреЗрдХреНрд╖рд┐рдд рдерд╛ рдФрд░ рдкреНрд░рд╛рдкреНрдд рд╣реБрдЖ рдерд╛, рд▓реЗрдХрд┐рди рдореИрдВ рдбреЗрдЯрд╛ рд╕реНрдХреАрдорд╛ рдЦреЛрд▓рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рдЗрд╕рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдлрд╝реАрд▓реНрдб рдФрд░ рдбреЗрдЯрд╛ рдореЗрдВ рд╣реА рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдореЗрдВ, рдбреЗрдЯрд╛ / рд╕реНрдХреАрдорд╛ рдореЗрдВ рдХреАрдкрде рдХреЛ рд╕рд╣реА рд╕реНрдерд╛рди рдкрд░ рд░рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдФрд░ рд╡рд╣рд╛рдВ рдХреНрдпрд╛ рдЙрдореНрдореАрдж рдХреА рдЧрдИ рдереА рдФрд░ рд╕рднреА рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
  • рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рддрд┐рдкрд╣рд┐рдпрд╛, рд▓реЗрдХрд┐рди рдКрдкрд░ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдЗрдВрдбреЗрдВрдЯреЗрд╢рди рдХреЛрдб рд╕рдВрдХреБрдЪрд┐рдд рд╣реЛрдиреЗ рдкрд░ рдЧрд╛рдпрдм рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

рдЬреЙрдп


Github
рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдВрд╕реНрдХрд░рдг: рдЬреЙрдп-рдмреНрд░рд╛рдЙрдЬрд╝рд░


рд╕рдВрднрд╡рддрдГ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рд╕рдмрд╕реЗ рдкреНрд░рд╕рд┐рджреНрдз рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдФрд░ рдПрдХ рдЕрдВрддрд╣реАрди рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рд╣реИред рдкрд╣рд▓реЗ рддреЛ рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕рд░реНрд╡рд░ рдкрд░ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕рдиреЗ рдЦреБрдж рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рджрд┐рдЦрд╛рдпрд╛ред рдХреБрдЫ рдмрд┐рдВрджреБ рдкрд░, рдореИрдВрдиреЗ рдЗрд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ type-check рд╕реЗ рдмрджрд▓рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдЙрд╕ рд╕рдордп, рдореИрдВрдиреЗ рд▓рдЧрднрдЧ рдмрдВрдбрд▓ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛, рдмрд╕ рдЗрд╕рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рдереАред рд▓реЗрдХрд┐рди рд╕рд╛рд▓ рднрд░ рдореЗрдВ рдпрд╣ рддреЗрдЬреА рд╕реЗ рдмрдврд╝рд╛ рд╣реИ рдФрд░ рдореЛрдмрд╛рдЗрд▓ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдкрд╣рд▓реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбрд╛рдЙрдирд▓реЛрдб рдмрд┐рд▓реНрдХреБрд▓ рднреА рд╕рд╣рдЬ рдирд╣реАрдВ рдерд╛ред рдШрдЯрдХреЛрдВ рдХреЗ рдПрдХ рдЖрд▓рд╕реА рд▓реЛрдбрд┐рдВрдЧ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ред рд╡реЗрдмрдкреИрдХ-рдмрдВрдбрд▓-рдПрдирд╛рд▓рд╛рдЗрдЬрд░ рд░рд┐рдкреЛрд░реНрдЯ рдореЗрдВ рдмрдВрдбрд▓ рдореЗрдВ рджрд┐рдЧреНрдЧрдЬреЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ рдФрд░ рд╡реЗ рд╕рднреА рдЖрд╕рд╛рдиреА рд╕реЗ рд╡реЗрдмрдкреИрдХ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ рд╡рд┐рдЦрдВрдбреВ рдореЗрдВ рдЪрд▓реЗ рдЧрдПред Joi рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕рднреАред рдХрдИ рдШрдЯрдХ рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕рднреА рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдорд╛рдиреНрдп рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд, Joi рдХреЛ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЪрдВрдХ рдореЗрдВ рдбрд╛рд▓рдиреЗ рд╕реЗ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдмрд╕ рдореБрдЦреНрдп рдПрдХ рдХреЗ рдмрд╛рдж рд╣рдореЗрд╢рд╛ рд╕рд╣реА рд▓реЛрдб рдХрд░реЗрдЧрд╛ред рдХреБрдЫ рдмрд┐рдВрджреБ рдкрд░, рдореБрдЦреНрдп рдмрдВрдбрд▓ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рдерд╛: tyts ред рдмреЗрд╢рдХ, рдПрдХ рд╕реНрдерд╛рдпреА рдЗрдЪреНрдЫрд╛ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдареАред рдореИрдВ рдПрдХ рд╣реА рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЪрд╛рд╣рддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдмрд╣реБрдд рдХрдоред


рд╣рд╛рдБ


Github


рд░реАрдбрдореА рдореЗрдВ рд╡реЗ рдПрдХ рд╣реА Joi рдмрд╛рд░реЗ рдореЗрдВ рд╡рд╛рджрд╛ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдХрд╛рд░ рдореЗрдВ рд╕рд╛рдордиреЗ рд╡рд╛рд▓реЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдХреЗрд╡рд▓ рджреЛ рдЧреБрдирд╛ рдЫреЛрдЯрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд, рдореБрдЦреНрдп рдмрдВрдбрд▓ рдореЗрдВ рдЕрднреА рднреА рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдерд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрддрд┐рд░рд┐рдХреНрдд рдиреБрдХрд╕рд╛рди рджрд┐рдЦрд╛рдИ рджрд┐рдП:


  • рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕рднреА undefined ред рд▓рдЧрд╛рддрд╛рд░ рд▓реЗрдЦрди .required() рдмрд╣реБрдд рд╕реБрдЦрдж рдирд╣реАрдВ рд╣реИ, рдФрд░ рдореБрдЭреЗ рдпрд╣ рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИ рдЬрдм рд╢реБрд░реВ рдореЗрдВ рд╕рдм рдХреБрдЫ рдЕрд╕рдВрднрд╡ рд╣реИ рдФрд░ рдЬрд╣рд╛рдВ рдЗрд╕рдХреА рдЕрдиреБрдорддрд┐ рд╣реИред Joi рдХрд╛ рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╣реИ presence: 'required' рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ presence: 'required' рд▓рд┐рдП presence: 'required' ред рдореИрдВрдиреЗ рдирд╛рд░рдХреАрдп рд╕рдВрдЦреНрдпрд╛ 666 рдХреЗ рд╕рд╛рде рдПрдХ рдЕрдиреБрд░реЛрдз рдмрдирд╛рдпрд╛, рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рд▓реЗрдЦрдХ рдЪреБрдк рд╣реИрдВред
  • рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рд╕рднреА рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓рддреА рд╣реИред Joi рд▓рд┐рдП рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдХрд┐рд╕реА рднреА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкрд╣рд▓реЗ рддрд░реНрдХ рдХреЗ рд╕рд╛рдеред рд╢рд╛рдпрдж рдпрд╣рд╛рдБ рдЕрднреА рднреА рдХрд┐рд╕реА рддрд░рд╣ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛, рдФрд░ рд▓реЗрдЦрдХ рдкрд╣рд▓реЗ рдорд╛рдЗрдирд╕ рдХреЛ рд╕рд╣реА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдХрд╛рд░ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдореИрдВ рдЦреБрдж рдХреБрдЫ рдЗрдВрддрдЬрд╛рд░ рдпрд╛ рд╕рдВрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред

ow


Github


рдЕрдЧрд▓рд╛ рдЖрд╡реЗрджрдХ рдЖрдЦрд┐рд░рдХрд╛рд░ рдЫреЛрдЯрд╛ рд╣реЛ рдЧрдпрд╛, рд╕рд╛рде рд╣реА рдЙрд╕рдиреЗ рдЙрд╕реЗ рд▓рдЧрд╛рддрд╛рд░ рдирд╣реАрдВ рд▓рд┐рдЦрд╛ () рдЬрд╣рд╛рдБ рдЖрдк рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдПрдХ рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рд▓рд┐рдЦ тАЛтАЛрд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдпрд╛ undefined рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:


 let optionalStringValidator = ow.optional.string; ow(optionalStringValidator, '1'); // Ok ow(optionalStringValidator, undefined); // Ok 

рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛! null рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛? рд╕рднреА рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреЛ рдкрд▓рдЯрддреЗ рд╣реБрдП, рдореБрдЭреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рдзрд┐ рдорд┐рд▓реА:


 ow.any(ow.optional.string, ow.null); 

рдЕрд░реЗ рдбрд░рдкреЛрдХ! рдЬрдм рдореИрдВрдиреЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд╕рддреНрдпрд╛рдкрди рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рддреЛ рдореИрдВрдиреЗ рдЗрд╕реЗ рдЯрд╛рдЗрдк рдХрд░рддреЗ рд╕рдордп рдЕрдкрдиреА рдЙрдВрдЧрд▓рд┐рдпрд╛рдВ рддреЛрдбрд╝ рджреАрдВред рдореИрдВрдиреЗ ow.nullable рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдкрд░ ow.nullable рдореБрджреНрджрд╛ ow.nullable , рдЬрд┐рд╕реЗ рдпрд╣рд╛рдВ рднреЗрдЬрд╛ рдЧрдпрд╛ рдерд╛ред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ null рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╡рд╣рд╛рдБ рджреА рдЧрдИ рджрд▓реАрд▓реЗрдВ рднреА рдХрд╛рдлреА рд╣рдж рддрдХ рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдореЗрдВ рджреА рдЧрдИ рд╣реИрдВ:


рдордиреБрд╖реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рди рддрд░реНрдХ рд╕рддреНрдпрд╛рдкрди

рдпрд╣реА рд╣реИ, рдпрд╣ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЙрди рдорд╛рдиреЛрдВ рдХреЛ рдорд╛рдиреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ рдЬреЛ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрддреЗ рд╣реИрдВред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рд╡реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд░реНрд╡рд░ рд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╡рд┐рд╢рд╛рд▓ рдиреЗрд╕реНрдЯреЗрдб рд╕рдВрд░рдЪрдирд╛рдУрдВ рдкрд░ рднрд░реЛрд╕рд╛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред
рдЖрдЧреЗ рдХреЗ рдЕрдзреНрдпрдпрди рдФрд░ рдЙрдкрдпреЛрдЧ рдХреА рдХреЛрд╢рд┐рд╢реЛрдВ рдиреЗ рдХрдИ рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдЦреБрд▓рд╛рд╕рд╛ рдХрд┐рдпрд╛, рдЬреЛ рдлрд┐рд░ рд╕реЗ, рд░реАрдбрдореА рдореЗрдВ рдПрдХ рд╣реА рдкрдВрдХреНрддрд┐ рджреНрд╡рд╛рд░рд╛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдордЭрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕реВрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИ, рдмрд╕ рдХреБрдЫ рдЕрдиреНрдп рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдПред




рдЗрдзрд░-рдЙрдзрд░, рдореИрдВ рдкрд╣рд▓реЗ рд╣реА рд╣рд╛рд░ рдорд╛рди рдХрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдердХ рдЪреБрдХрд╛ рдерд╛ рдФрд░ рдЕрдкрдиреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдмреНрд▓реИрдХрдЬреИрдХ рдФрд░ рд╡рд░реНрдЬрд┐рди рдХреЗ рд╕рд╛рде рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рд╣рд╛рдВ, рд╣рд╛рдВ, рдореИрдВ рдЕрдЧрд▓реА рдмрд╛рдЗрдХ рдХреЗ рд╕рд╛рде рдЖрдкрдХреЗ рдкрд╛рд╕ рд╡рд╛рдкрд╕ рдЖ рдЧрдпрд╛ рд╣реВрдВ :)ред рдорд┐рд▓рдирд╛


OmYumYum


рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг:


 import om from 'omyumyum'; const isOptionalNumber = om.number.or.undefined; isOptionalNumber('1'); // => false isOptionalNumber(1); // => true isOptionalNumber(undefined); // => true 

.or рд░реВрдк рдореЗрдВ рд╕рдВрднрд╡ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдмрдврд╝рд╛рдХрд░ рдЖрдк рдЬрд┐рддрдиреА рдмрд╛рд░ рдЪрд╛рд╣реЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:


 om.number.or.string.or.null.or.undefined; 

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд▓рдЧрднрдЧ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдлрд╝рдВрдХреНрд╢рди рд▓рдЧрд╛рддрд╛рд░ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рднреА рддрд░реНрдХ рдХреЛ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдПрдХ boolean рджреЗрддрд╛ рд╣реИред
рдпрджрд┐ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдлрд▓ рд╣реЛрдиреЗ рдкрд░ рдлрд╝рдВрдХреНрд╢рди рддреНрд░реБрдЯрд┐ рдХреЛ рдлреЗрдВрдХ рджреЗ:


 om(om.number, '1'); //  TypeError 

рдпрд╛ рдХрд░реА рдХреЗ рд╕рд╛рде:


 const isNumberOrThrow = om(om.number); isNumberOrThrow('1') //  TypeError 

рдкрд░рд┐рдгрд╛рдореА рдлрд╝рдВрдХреНрд╢рди рдХрд╛рдлреА рд╕рд╛рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рддрд░реАрдХреЗ рд╣реИрдВред .or рдкрд╣рд▓реЗ .or рд╣реА рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддрд░реАрдХреЛрдВ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдЪрдпрдирд┐рдд рдкреНрд░рдХрд╛рд░ ( рдПрдкреАрдЖрдИ рджреЗрдЦреЗрдВ) рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░реЗрдЧрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдПрдХ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд╕рд╛рде рдмрдврд╝рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:


 const isNonEmptyString = om.string.pattern(/\S/); // == `om.string.nonEmpty` isNonEmptyString(' '); // => false isNonEmptyString('1'); // => true 

рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЗрд╕рдХрд╛ рдЖрдХрд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:


 const isUserData = om.object.shape({ name: om.string, age: om.number.or.vacuum // `.or.vacuum` == `.or.null.or.undefined` }); isUserData({}); // => false isUserData({ age: 20 }) // => false isUserData({ name: '' }); // => true isUserData({ name: '', age: null }); // => true isUserData({ name: '', age: 20 }); // => true 

рд╕рдорд╕реНрдпрд╛ рдХреА рдЬрдЧрд╣ рдХреЗ рд▓рд┐рдП рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдХреАрдкреИрдб:


 om(om.array.of(om.object.shape({ name: om.string })), [{ name: '' }, { name: null }]); //  TypeError('Type mismatch at "[1].name"') 

рдпрджрд┐ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдЖрдк рд╣рдореЗрд╢рд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред .custom(validator: (value: any) => boolean) :


 const isEmailOrPhone = om.custom(require('is-email')).or.custom(require('is-phone')); isEmailOrPhone('test@test.test'); // => true 

рд╕реНрдЯреЙрдХ рдореЗрдВ рднреА рдЕрдкреЗрдХреНрд╖рд┐рдд рд╣реИ .and рдФрд░ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рдВрдпреЛрдЬрди рдФрд░ рд╕реБрдзрд╛рд░ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:


 const isNonZeroString = om.string.and.custom(str => str.length > 0); // == `om.string.nonZero` isNonZeroString(''); // => false isNonZeroString('1'); // => true 

.custom() рдкрд░ рдкреВрд░реНрд╡рд╡рд░реНрддреАрддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ .and рд▓реЗрдХрд┐рди, .custom() рд▓рд╛рдЗрдмреНрд░реЗрд░реА рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рдареАрдХ рдЙрд╕реА рд░реВрдк рдХреЗ рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕реЗ рджрд░рдХрд┐рдирд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:


 //      `age`,   `birthday` om.object.shape({ name: om.string }).and.custom( om.object.shape({ age: om.number }) .or.object.shape({ birthday: om.date })] ); 

рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рдмрдирд╛рдП рдЧрдП рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛рдУрдВ рдореЗрдВ рд╕реБрдзрд╛рд░ рдЬрд╛рд░реА рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдкреБрд░рд╛рдиреЗ рд╡рд╛рд▓реЗ рдХрднреА рдЦрд░рд╛рдм рдирд╣реАрдВ рд╣реЛрддреЗред рдЖрдЗрдП рдкрд╣рд▓реЗ рдмрдирд╛рдП рдЧрдП isUserData рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:


 const isImprovedUserData = isUserData.and.object.shape({ friends: om.array.of(isUserData).or.vacuum }); isImprovedUserData({ name: '', age: 20, friends: [{ name: '', age: 18 }] }); // => true 

рдЦреИрд░, рд░реБрдХреЗ .not ред


 const isNotVacuum = om.not.null.and.not.undefined; // == `om.not.vacuum` isNotVacuum(1); // => true isNotVacuum(null); // => false isNotVacuum(undefined); // => false 

рдЕрдиреНрдп рдЙрдкрд▓рдмреНрдз рддрд░реАрдХреЛрдВ рдХреЛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдПрдкреАрдЖрдИ рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред


рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд▓рд╛рдн:


  • .Or, .not , .not рдФрд░ рдХреЛрд╖реНрдардХ рдХреА рдПрдХ рдиреНрдпреВрдирддрдо рдХреЗ рд╕рд╛рде рд▓реИрдХреЛрдирд┐рдХ рд╕рд┐рдВрдЯреИрдХреНрд╕ред рд╕реНрд╡рдд: рдкреВрд░реНрдг рдЯрд╛рдЗрдк рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдореЗрдВ, рд╕реЗрдЯ рдПрдХ рдЦреБрд╢реА рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИред
  • Ow рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдХрдо рд╡рдЬрди (рд▓рдЧрднрдЧ 10 рдЧреБрдирд╛ рдХрдо (рдорд┐рдирд┐рдлрд╛рдИ + рдЧрдЬрд╝рд┐рдк)), рдФрд░ Joi рдХреА рддреБрд▓рдирд╛ рдореЗрдВ Joi рдкреБрд╕реНрддрдХрд╛рд▓рдп рдПрдХ рдкрд╣рд╛рдбрд╝ рдХреЗ рдмрдЧрд▓ рдореЗрдВ рдПрдХ рдкрдВрдЦ рдХреА рддрд░рд╣ рд╣реИред
  • рдЕрдЪреНрдЫрд╛ рдирд╛рдо :)

рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд╡рд┐рдкрдХреНрд╖:


  • рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдФрд░ рдЙрдирдХреЗ рд╕рдВрд╢реЛрдзрдХред рдФрд░ рдпрд╣ рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реЛрдЧрд╛ред рд▓реЗрдЦ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рджрд┐рдП рдЧрдП рд╕рднреА рддреАрди рдЙрдкрдпреЛрдЧ рдкрд░рд┐рджреГрд╢реНрдп (рдЬрдВрдХреНрд╢рдиреЛрдВ рдФрд░ рдХреЛрдб рдЖрдзрд╛рд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ) рд╕рд╛рджреЗ рдкрд╛рда рдбреЗрдЯрд╛ рдХреЗ рд╣рд╕реНрддрд╛рдВрддрд░рдг рдХреЛ рдорд╛рдирддреЗ рд╣реИрдВ, рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдпрд╣ JSON рд╣реИред рдЕрд░реНрдерд╛рддреН, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдЗрд╕ рддрд░рд╣ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ JSON рдореЗрдВ рд╕рдВрднрд╡ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд╕рд╛рде рд╣реА undefined рдФрд░ рдХреБрдЫ рдЖрдорддреМрд░ рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рднреА рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдПрдХ рд╣реА Ow рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ, рдЯрд╛рдЗрдк рдХрд┐рдП рдЧрдП рд╕рд░рдгрд┐рдпреЛрдВ рдФрд░ рдЕрдиреНрдп рдмрдХрд╡рд╛рд╕ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде crammed рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╢рд╛рдирджрд╛рд░ рд╣реИред
  • Joi рдЬреИрд╕реЗ рдбреЗрдЯрд╛ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ Joi рдЙрд╕ рдкрд░ рдмрд╣реБрдд рдмреБрд░рд╛ рд╣реИред рдХрдо рд╕реЗ рдХрдо рдореЗрд░реЗ рдкрд╛рд╕ рдЗрд╕рдХреА рдкрд░реНрдпрд╛рдкреНрдд рдХреНрд╖рдорддрд╛рдПрдВ рдирд╣реАрдВ рд╣реИрдВ, рдФрд░ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡рд┐рднрд┐рдиреНрди рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рд░реВрдкрд╛рдВрддрд░рдг рдХрд░рддрд╛ рд╣реВрдВред рд╢рд╛рдпрдж рдпрд╣ omyumyum рд▓рд┐рдП рдПрдХ рдФрд░ рд╡рд┐рдХрд╛рд╕ рдХреА рджрд┐рд╢рд╛ рд╣реИред

рд╡рд╣ рд╕рдм рд╣реИ! рдЕрдЧрд░ рдЖрдкрдХреЛ рд▓реЗрдЦ рдкрд╕рдВрдж рдЖрдпрд╛, рддреЛ рдЗрд╕реЗ рд▓рд╛рдЗрдХ рдХрд░реЗрдВ, рдЪреИрдирд▓ рдХреЛ рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдм рдХрд░реЗрдВ рдФрд░ рд╢реБрднрдХрд╛рдордирд╛рдПрдБ))ред

Source: https://habr.com/ru/post/hi473026/


All Articles