Files
nxxmdata/bank-backend/test-database-storage.js

81 lines
2.9 KiB
JavaScript
Raw Normal View History

2025-09-24 17:49:32 +08:00
const { User } = require('./models');
const bcrypt = require('bcryptjs');
async function testDatabaseStorage() {
try {
console.log('=== 测试数据库存储问题 ===\n');
// 1. 生成一个新的密码哈希
const testPassword = 'Admin123456';
const newHash = await bcrypt.hash(testPassword, 10);
console.log('1. 生成新的密码哈希:');
console.log('原始密码:', testPassword);
console.log('生成的哈希:', newHash);
console.log('哈希长度:', newHash.length);
console.log('');
// 2. 验证新生成的哈希
console.log('2. 验证新生成的哈希:');
const isValid = await bcrypt.compare(testPassword, newHash);
console.log('新哈希验证结果:', isValid);
console.log('');
// 3. 更新数据库
console.log('3. 更新数据库:');
const user = await User.findOne({ where: { username: 'admin' } });
if (!user) {
console.log('❌ 未找到admin用户');
return;
}
await user.update({ password: newHash });
console.log('✅ 数据库已更新');
console.log('');
// 4. 重新查询数据库
console.log('4. 重新查询数据库:');
const updatedUser = await User.findOne({ where: { username: 'admin' } });
if (updatedUser) {
console.log('查询到的密码哈希:', updatedUser.password);
console.log('查询到的哈希长度:', updatedUser.password.length);
console.log('哈希是否匹配:', updatedUser.password === newHash);
console.log('');
// 5. 测试查询到的哈希
console.log('5. 测试查询到的哈希:');
const queryTest = await bcrypt.compare(testPassword, updatedUser.password);
console.log('查询到的哈希验证结果:', queryTest);
console.log('');
// 6. 测试User模型的validPassword方法
console.log('6. 测试User模型的validPassword方法:');
const modelTest = await updatedUser.validPassword(testPassword);
console.log('模型验证结果:', modelTest);
console.log('');
if (queryTest && modelTest) {
console.log('🎉 数据库存储和验证都正常!');
} else if (queryTest && !modelTest) {
console.log('❌ 数据库存储正常但User模型验证失败');
console.log('可能原因: User模型的validPassword方法有问题');
} else if (!queryTest && modelTest) {
console.log('❌ 数据库存储有问题但User模型验证成功');
console.log('可能原因: 数据库存储时数据被截断或损坏');
} else {
console.log('❌ 数据库存储和User模型验证都失败');
console.log('可能原因: 数据库字段长度不够或编码问题');
}
} else {
console.log('❌ 重新查询用户失败');
}
} catch (error) {
console.error('测试失败:', error.message);
console.error('错误堆栈:', error.stack);
}
process.exit(0);
}
testDatabaseStorage();