Node.js与原生JS下如何将Ag-Grid行数据数组传至后端
解决方案
核心问题说明
你用module.exports导出前端rowData的思路完全错误——前后端是完全独立的运行环境,前端浏览器里的变量没法直接通过require在Node.js后端获取,这是跨环境的逻辑错误。
前端:通过POST请求传递rowData
前端需要把构建好的rowData通过HTTP POST请求发送到后端,而不是尝试导出变量:
async function getLiquidity() { // 你的原有逻辑:构建rowData数组 const rowData = [...]; // 已确认能正确生成的数组 console.log(rowData); try { // 发送POST请求到后端接口 const response = await fetch('/api/submit-liquidity', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify(rowData), // 将数组转为JSON字符串传递 }); const result = await response.json(); console.log('数据提交成功:', result); } catch (err) { console.error('提交失败:', err); } }
后端:接收并处理数据
后端需要配置路由接收前端的JSON数据,再交给Sequelize处理:
- 先确保Express项目配置了解析JSON的中间件:
const express = require('express'); const app = express(); // 必须配置这个,才能解析POST请求的JSON体 app.use(express.json());
- 创建对应的POST路由:
const Liquidity = require('./models/liquidity'); // 你的Sequelize模型 app.post('/api/submit-liquidity', async (req, res) => { try { const rowData = req.body; // 这里就是前端传过来的数组 if (!Array.isArray(rowData) || rowData.length === 0) { return res.status(400).json({ error: '无效的数据格式' }); } // 用Sequelize批量处理数据,示例用bulkCreate const result = await Liquidity.bulkCreate(rowData); res.status(200).json({ success: true, data: result }); } catch (err) { console.error('数据处理失败:', err); res.status(500).json({ error: '服务器内部错误' }); } });
原方法失败的原因
- 浏览器环境不支持Node.js的
module.exports语法,直接用会抛出ReferenceError; - 后端
require前端文件时,rowData是用户交互后才生成的,模块加载时根本不存在,所以后端拿到的是空值; - 前后端没有共享内存,必须通过HTTP请求完成数据传递。
内容的提问来源于stack exchange,提问作者ron
相关产品推荐
相关产品推荐

