Inspired by Mongoose Schema to apply a predefined Schema to a javascript Object.
import ObjectSchema from '@nextlvlup/object-schema';
// Create User schema
interface User {
firstName?: string;
lastName?: string;
age: number;
birthday: Date;
posts: [
{
id?: string;
text: string;
}
],
permissions: string[];
}
const userSchema = new ObjectSchema<User>({
firstName: String,
lastName: String,
age: { type: Number, default: 20 },
birthday: { type: Date },
posts: [
{
_id: { type: String, alias: "id" },
text: { type: String, required: true },
},
],
permissions: [String],
});
/* Apply Schema an Options
* the second parameter is optional,
* valide options: reduce / strictType
*/
userSchema
.filter(object, { reduce: false, strictType: false })
.then((result) => /* filtered and reduced object */)
.catch((err) => /* errors */);