typeORMで、パスワード等のカラムを扱う時にうっかりapiのレスポンスに値を含め無い様にする仕組みが用意されています。
何もしない場合
@Entity()
export class User {
@PrimaryGeneratedColumn()
readonly id: number;
@Column({
name: 'name',
length: 255,
})
name: string;
@Column('varchar', { name: 'password'})
password: string;
}
selectすると全カラムが普通に取得されます。うっかりそのままAPIのレスポンスに含めるとまずいです。
除外する
@Entity()
export class User {
@PrimaryGeneratedColumn()
readonly id: number;
@Column({
name: 'name',
length: 255,
})
name: string;
@Column('varchar', { name: 'password', select: false}) // ここ
password: string;
}
{select: false}
というオプションをつければOKです。SQLレベルで除外されます。
ちなみに何かしらの理由で敢えて取得したい場合は、明示的に書けばOKです。
const user = await this.userRepository.find({
select: ['password']
});