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

95 lines
3.4 KiB
JavaScript

const { User } = require('./models');
const { sequelize } = require('./config/database');
const bcrypt = require('bcryptjs');
async function testActualData() {
try {
console.log('=== 测试实际数据库数据 ===\n');
// 1. 直接查询数据库
console.log('1. 直接查询数据库...');
const [results] = await sequelize.query(
'SELECT id, username, password, status FROM bank_users WHERE username = ?',
{
replacements: ['admin'],
type: sequelize.QueryTypes.SELECT
}
);
if (!results) {
console.log('❌ 数据库中未找到admin用户');
console.log('查询结果:', results);
return;
}
const dbUser = results;
console.log('数据库中的用户数据:');
console.log('查询结果:', results);
console.log('结果长度:', results.length);
if (dbUser) {
console.log('ID:', dbUser.id);
console.log('用户名:', dbUser.username);
console.log('状态:', dbUser.status);
console.log('密码哈希:', dbUser.password);
console.log('密码哈希长度:', dbUser.password ? dbUser.password.length : 0);
}
console.log('');
// 2. 使用Sequelize查询
console.log('2. 使用Sequelize查询...');
const sequelizeUser = await User.findOne({ where: { username: 'admin' } });
if (sequelizeUser) {
console.log('Sequelize查询到的用户数据:');
console.log('ID:', sequelizeUser.id);
console.log('用户名:', sequelizeUser.username);
console.log('状态:', sequelizeUser.status);
console.log('密码哈希:', sequelizeUser.password);
console.log('密码哈希长度:', sequelizeUser.password ? sequelizeUser.password.length : 0);
console.log('');
// 3. 比较两种查询结果
console.log('3. 比较两种查询结果:');
console.log('密码哈希是否相同:', dbUser.password === sequelizeUser.password);
console.log('');
// 4. 测试密码验证
const testPassword = 'Admin123456';
console.log('4. 测试密码验证:');
console.log('测试密码:', testPassword);
// 使用数据库查询的密码哈希
const dbTest = await bcrypt.compare(testPassword, dbUser.password);
console.log('数据库密码验证结果:', dbTest);
// 使用Sequelize查询的密码哈希
const sequelizeTest = await bcrypt.compare(testPassword, sequelizeUser.password);
console.log('Sequelize密码验证结果:', sequelizeTest);
// 使用User模型的validPassword方法
const modelTest = await sequelizeUser.validPassword(testPassword);
console.log('User模型验证结果:', modelTest);
console.log('');
if (dbTest && sequelizeTest && modelTest) {
console.log('🎉 所有验证都成功!');
} else {
console.log('❌ 验证失败');
console.log('可能原因:');
if (!dbTest) console.log('- 数据库中的密码哈希有问题');
if (!sequelizeTest) console.log('- Sequelize查询的密码哈希有问题');
if (!modelTest) console.log('- User模型的validPassword方法有问题');
}
} else {
console.log('❌ Sequelize查询失败');
}
} catch (error) {
console.error('测试失败:', error.message);
console.error('错误堆栈:', error.stack);
}
process.exit(0);
}
testActualData();