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