buider
This commit is contained in:
142
backend/test-data-sync.js
Normal file
142
backend/test-data-sync.js
Normal file
@@ -0,0 +1,142 @@
|
||||
/**
|
||||
* 测试前端和后端数据同步
|
||||
* 验证经纬度数据的完整流程
|
||||
* @file test-data-sync.js
|
||||
*/
|
||||
|
||||
const { Farm } = require('./models');
|
||||
const { sequelize } = require('./config/database-simple');
|
||||
|
||||
async function testDataSync() {
|
||||
try {
|
||||
console.log('连接数据库...');
|
||||
await sequelize.authenticate();
|
||||
|
||||
console.log('\n=== 测试数据同步 ===');
|
||||
|
||||
// 1. 创建测试记录
|
||||
console.log('\n1. 创建测试记录...');
|
||||
const testFarm = await Farm.create({
|
||||
name: '数据同步测试农场',
|
||||
type: 'farm',
|
||||
location: {
|
||||
lng: 106.28,
|
||||
lat: 38.47
|
||||
},
|
||||
address: '宁夏回族自治区银川市测试区',
|
||||
contact: '测试管理员',
|
||||
phone: '13800138000',
|
||||
status: 'active'
|
||||
});
|
||||
|
||||
console.log(`✅ 创建成功 - ID: ${testFarm.id}`);
|
||||
console.log(` 经度: ${testFarm.location.lng}`);
|
||||
console.log(` 纬度: ${testFarm.location.lat}`);
|
||||
|
||||
// 2. 查询记录验证
|
||||
console.log('\n2. 查询记录验证...');
|
||||
const retrievedFarm = await Farm.findByPk(testFarm.id);
|
||||
console.log(`查询结果:`);
|
||||
console.log(` ID: ${retrievedFarm.id}`);
|
||||
console.log(` 名称: ${retrievedFarm.name}`);
|
||||
console.log(` Location类型: ${typeof retrievedFarm.location}`);
|
||||
console.log(` Location值: ${JSON.stringify(retrievedFarm.location)}`);
|
||||
console.log(` 经度: ${retrievedFarm.location.lng} (类型: ${typeof retrievedFarm.location.lng})`);
|
||||
console.log(` 纬度: ${retrievedFarm.location.lat} (类型: ${typeof retrievedFarm.location.lat})`);
|
||||
|
||||
// 3. 模拟API响应格式
|
||||
console.log('\n3. 模拟API响应格式...');
|
||||
const apiResponse = {
|
||||
success: true,
|
||||
data: {
|
||||
id: retrievedFarm.id,
|
||||
name: retrievedFarm.name,
|
||||
location: retrievedFarm.location,
|
||||
address: retrievedFarm.address,
|
||||
contact: retrievedFarm.contact,
|
||||
phone: retrievedFarm.phone,
|
||||
status: retrievedFarm.status
|
||||
}
|
||||
};
|
||||
|
||||
console.log('API响应格式:');
|
||||
console.log(JSON.stringify(apiResponse, null, 2));
|
||||
|
||||
// 4. 模拟前端数据解析
|
||||
console.log('\n4. 模拟前端数据解析...');
|
||||
const frontendData = apiResponse.data;
|
||||
const formData = {
|
||||
id: frontendData.id,
|
||||
name: frontendData.name,
|
||||
address: frontendData.address,
|
||||
contact: frontendData.contact,
|
||||
phone: frontendData.phone,
|
||||
status: frontendData.status,
|
||||
longitude: frontendData.location?.lng,
|
||||
latitude: frontendData.location?.lat
|
||||
};
|
||||
|
||||
console.log('前端表单数据:');
|
||||
console.log(` 经度: ${formData.longitude} (类型: ${typeof formData.longitude})`);
|
||||
console.log(` 纬度: ${formData.latitude} (类型: ${typeof formData.latitude})`);
|
||||
|
||||
// 5. 模拟更新操作
|
||||
console.log('\n5. 模拟更新操作...');
|
||||
const updateData = {
|
||||
longitude: 106.30,
|
||||
latitude: 38.50
|
||||
};
|
||||
|
||||
// 构建新的location对象
|
||||
const newLocation = {
|
||||
lng: parseFloat(updateData.longitude),
|
||||
lat: parseFloat(updateData.latitude)
|
||||
};
|
||||
|
||||
await retrievedFarm.update({ location: newLocation });
|
||||
|
||||
// 验证更新结果
|
||||
const updatedFarm = await Farm.findByPk(testFarm.id);
|
||||
console.log('更新后的数据:');
|
||||
console.log(` 经度: ${updatedFarm.location.lng}`);
|
||||
console.log(` 纬度: ${updatedFarm.location.lat}`);
|
||||
|
||||
// 6. 验证数据一致性
|
||||
console.log('\n6. 验证数据一致性...');
|
||||
const isConsistent = (
|
||||
updatedFarm.location.lng === updateData.longitude &&
|
||||
updatedFarm.location.lat === updateData.latitude
|
||||
);
|
||||
|
||||
console.log(`数据一致性检查: ${isConsistent ? '✅ 通过' : '❌ 失败'}`);
|
||||
console.log(` 期望经度: ${updateData.longitude}`);
|
||||
console.log(` 实际经度: ${updatedFarm.location.lng}`);
|
||||
console.log(` 期望纬度: ${updateData.latitude}`);
|
||||
console.log(` 实际纬度: ${updatedFarm.location.lat}`);
|
||||
|
||||
// 7. 清理测试数据
|
||||
console.log('\n7. 清理测试数据...');
|
||||
await testFarm.destroy();
|
||||
console.log('✅ 测试数据已清理');
|
||||
|
||||
console.log('\n=== 测试完成 ===');
|
||||
console.log(`结果: ${isConsistent ? '数据同步正常' : '数据同步异常'}`);
|
||||
|
||||
} catch (error) {
|
||||
console.error('测试失败:', error.message);
|
||||
if (error.sql) {
|
||||
console.error('SQL:', error.sql);
|
||||
}
|
||||
} finally {
|
||||
await sequelize.close();
|
||||
console.log('\n数据库连接已关闭');
|
||||
}
|
||||
}
|
||||
|
||||
// 运行测试
|
||||
if (require.main === module) {
|
||||
console.log('开始测试数据同步...');
|
||||
testDataSync();
|
||||
}
|
||||
|
||||
module.exports = { testDataSync };
|
||||
Reference in New Issue
Block a user