48-Nodejs Course 2023: Database Models: Custom Data Casting: Encrypted Password
Hasan Zohdy
Posted on November 7, 2022
Custom Casts
Now let's talk about custom casts, what if we want to cast a value to a custom type, for example, we want to cast the password value.
Let's make a folder called casts
in the src/core/database/casts
folder and create cast-password.ts
file.
We need to generate a make a password generated and to be solid, we will use Password Hash Generator And Verifier to achieve this easily.
Let's install it
yarn add @mongez/password
Now let's create the cast-password.ts
file
// src/core/database/casts/cast-password.ts
import { hash } from '@mongez/password';
/**
* Cast password
*/
export default function castPassword(
columnName: string,
value: any
) {
return hash(value, 15); // second argument is the salt
}
Now let's update the User
model to use this cast
// src/app/users/models/user.ts
import { Model } from "core/database";
import castPassword from "core/database/casts/cast-password";
import { Casts, Document } from "core/database/model/types";
export default class User extends Model {
/**
* Collection name
*/
public static collectionName = "users";
/**
* {@inheritDoc}
*/
public defaultValue: Document = {
isActive: true,
isEmailVerified: false,
isPhoneVerified: false,
};
protected casts: Casts = {
isActive: "boolean",
isPhoneVerified: "boolean",
joinDate: "date",
password: castPassword,
};
}
Now let's try to create a new user
// src/app/users/routes.ts
import User from './models/user';
const user = new User({
name: 'Hassan',
password: '123456',
});
await user.save();
consol.log(user.data); // { name: 'Hassan', password: '$2b$23$...' }
And that's it!
🎨 Conclusion
In this lesson, we learned how to create custom casts, and we created a custom cast for the password value.
🚀 Project Repository
You can find the latest updates of this project on Github
😍 Join our community
Join our community on Discord to get help and support (Node Js 2023 Channel).
🎞️ Video Course (Arabic Voice)
If you want to learn this course in video format, you can find it on Youtube, the course is in Arabic language.
💰 Bonus Content 💰
You may have a look at these articles, it will definitely boost your knowledge and productivity.
General Topics
- Event Driven Architecture: A Practical Guide in Javascript
- Best Practices For Case Styles: Camel, Pascal, Snake, and Kebab Case In Node And Javascript
- After 6 years of practicing MongoDB, Here are my thoughts on MongoDB vs MySQL
Packages & Libraries
- Collections: Your ultimate Javascript Arrays Manager
- Supportive Is: an elegant utility to check types of values in JavaScript
- Localization: An agnostic i18n package to manage localization in your project
React Js Packages
Courses (Articles)
Posted on November 7, 2022
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.