how to hide password when get the model
susatyo441 opened this issue · comments
Gelorawan Susatyo commented
Issue
How can I hide the password? is there any way to not select the password using typescript-sequelize?
Versions
- sequelize: ^6.37.1
- sequelize-typescript: 2.1.6
- typescript: ^5.1.3
Issue type
- bug report
- [ x] feature request
Actual behavior
Expected behavior
Steps to reproduce
Related code
// src/models/user.model.ts
import { Table, Column, Model } from 'sequelize-typescript';
import { Exclude } from 'class-transformer';
import { IsNotEmpty } from 'class-validator';
import { IsEmail } from 'class-validator';
@Table
export class User extends Model {
@Column
@IsNotEmpty()
name: string;
@Column
@IsEmail()
email: string;
@Column
@Exclude({ toPlainOnly: true })
password: string;
@Column({
type: 'ENUM',
values: ['l', 'p'],
})
gender: string;
}
Kien Nguyen commented
I override toJSON
toJSON() {
const json = super.toJSON();
// Make sure that the password is not included in the response
delete json.password;
return json;
}
NenadJovicic commented
You can also use scopes for this
@Table
@DefaultScope(() => {
exclude: ['password']
})
export class User extends Model {...}
And then, for cases where you need it, you can create a different @Scope()
you can find more here https://github.com/sequelize/sequelize-typescript?tab=readme-ov-file#scopes
Oscar Javier Gentilezza Arenas commented
@Column({
get: () => undefined,
})
password: string;