Files
jiebanke/backend/scripts/test-backend-connection.js

124 lines
4.6 KiB
JavaScript

#!/usr/bin/env node
/**
* 后端数据库连接测试脚本
* 测试backend中的数据库连接配置是否正常工作
*/
const { testConnection, query } = require('../src/config/database');
async function testBackendConnection() {
console.log('🚀 测试后端数据库连接配置...');
console.log('='.repeat(50));
try {
// 测试数据库连接
console.log('🔍 测试数据库连接...');
const isConnected = await testConnection();
if (!isConnected) {
console.error('❌ 数据库连接失败');
return false;
}
// 测试查询功能
console.log('🔍 测试查询功能...');
const testResult = await query('SELECT 1 + 1 as result, NOW() as server_time');
console.log(`✅ 查询测试成功: ${testResult[0].result}, 时间: ${testResult[0].server_time}`);
// 测试管理员数据查询
console.log('🔍 测试管理员数据查询...');
const admins = await query('SELECT id, username, role, status FROM admins LIMIT 3');
console.log(`📊 管理员数据: ${admins.length} 条记录`);
admins.forEach(admin => {
console.log(` - ID:${admin.id} ${admin.username} (${admin.role}, 状态:${admin.status})`);
});
// 测试用户数据查询
console.log('🔍 测试用户数据查询...');
const users = await query('SELECT id, username, user_type, status, balance FROM users LIMIT 5');
console.log(`📊 用户数据: ${users.length} 条记录`);
users.forEach(user => {
console.log(` - ID:${user.id} ${user.username} (${user.user_type}, 余额:${user.balance})`);
});
// 测试动物数据查询
console.log('🔍 测试动物数据查询...');
const animals = await query('SELECT id, name, type, price, status FROM animals LIMIT 5');
console.log(`📊 动物数据: ${animals.length} 条记录`);
animals.forEach(animal => {
console.log(` - ID:${animal.id} ${animal.name} (${animal.type}, 价格:${animal.price})`);
});
// 测试订单数据查询
console.log('🔍 测试订单数据查询...');
const orders = await query(`
SELECT o.id, o.order_no, o.type, o.final_amount, o.status, u.username
FROM orders o
LEFT JOIN users u ON o.user_id = u.id
LIMIT 5
`);
console.log(`📊 订单数据: ${orders.length} 条记录`);
orders.forEach(order => {
console.log(` - ${order.order_no} (${order.type}, ¥${order.final_amount}, ${order.status}) - ${order.username}`);
});
// 测试支付数据查询
console.log('🔍 测试支付数据查询...');
const payments = await query(`
SELECT p.id, p.payment_no, p.amount, p.payment_method, p.status, u.username
FROM payments p
LEFT JOIN users u ON p.user_id = u.id
LIMIT 5
`);
console.log(`📊 支付数据: ${payments.length} 条记录`);
payments.forEach(payment => {
console.log(` - ${payment.payment_no}${payment.amount}, ${payment.payment_method}, ${payment.status}) - ${payment.username}`);
});
// 统计数据
console.log('\n📊 数据库统计:');
const stats = await query(`
SELECT
(SELECT COUNT(*) FROM admins) as admin_count,
(SELECT COUNT(*) FROM users) as user_count,
(SELECT COUNT(*) FROM merchants) as merchant_count,
(SELECT COUNT(*) FROM animals) as animal_count,
(SELECT COUNT(*) FROM flowers) as flower_count,
(SELECT COUNT(*) FROM travel_plans) as travel_plan_count,
(SELECT COUNT(*) FROM orders) as order_count,
(SELECT COUNT(*) FROM payments) as payment_count
`);
const stat = stats[0];
console.log(` 管理员: ${stat.admin_count}`);
console.log(` 用户: ${stat.user_count}`);
console.log(` 商家: ${stat.merchant_count}`);
console.log(` 动物: ${stat.animal_count}`);
console.log(` 鲜花: ${stat.flower_count}`);
console.log(` 旅行计划: ${stat.travel_plan_count}`);
console.log(` 订单: ${stat.order_count}`);
console.log(` 支付记录: ${stat.payment_count}`);
console.log('\n🎉 后端数据库连接测试完成!');
console.log('✅ 所有功能正常');
return true;
} catch (error) {
console.error('❌ 后端数据库连接测试失败:', error.message);
console.error('🔍 错误详情:', error);
return false;
}
}
// 如果是直接运行此文件,则执行测试
if (require.main === module) {
testBackendConnection()
.then((success) => {
process.exit(success ? 0 : 1);
})
.catch(() => process.exit(1));
}
module.exports = { testBackendConnection };