【问题标题】:Migration update table with hash password带有哈希密码的迁移更新表
【发布时间】:2021-03-15 00:13:17
【问题描述】:
我需要在迁移中将字符串密码转换为哈希我使用此代码,但选择后事务完成
const users = await queryRunner.query('SELECT * FROM app_user;');
users.map(async user => {
user.password = await bcrypt.hash(user.password, 10);
await queryRunner.query(
`UPDATE app_user SET passsword = '${user.password}' WHERE id = ${user.id}`,
);
});
}```
【问题讨论】:
标签:
node.js
typescript
database-migration
typeorm
【解决方案1】:
也许不是最好的解决方案,但我希望它能奏效
const users = await queryRunner.manager.createQueryBuilder().from('app_user', 'app_user').execute();
if (users.length > 0) {
const passwords = await Promise.all(users.map(user => bcrypt.hash(user.password, 10)));
users.forEach((user, idx) => {
queryRunner.manager
.createQueryBuilder()
.update('app_user')
.set({ password: passwords[idx]})
.where('id = :id', { id: user.id })
.execute();
})
}