Files
nxxmdata/bank-backend/test-database-storage.js
2025-09-24 17:49:32 +08:00

81 lines
2.9 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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();