如何在JavaScript中存储和检索MySQL数据库中的JSON数据
How to store and retrieve JSON data from a MySQL DB in JavaScript?
我的设置:
我正在做的是从MySQL(40000+Rows)中提取一个非常大的表
SpoolInfo.request.query("SELECT SpoolNumber AS a, DrawingNumber AS b, LineSize AS c, PipeSpec AS d, CU AS e, SheetNumber AS f, FluidCode AS g FROM Job" + JobNumber + ".SpoolInfo ORDER BY SpoolNumber ASC");
对它做一个简单的操作来格式化它——它是应用程序所需要的——我必须将它发送到:
if(SpoolInfo.response.data){
SpoolInfoRowsObj = {"Cache":[]};
SpoolInfo.response.data.forEach(function(d,di){
SpoolInfoRowsObj.Cache.push(_.values(SpoolInfo.response.data[di]));
});
然后将其存储回缓存表中以实现更快的访问:
(这是必要的,因为我找不到让.forEach循环运行得更快的方法,目前需要20多秒。)
UpdateCacheTable1.request = new AP.MySQL.Request();
UpdateCacheTable1.request.execute("UPDATE `Job" + JobNumber + "`.`CacheTable_SpoolInfo` SET `SpoolInfoObj` = '" + JSON.stringify(SpoolInfoRowsObj.Cache) + "' WHERE ID = 1");
问题:
当我稍后取回数据时:
CacheSpoolInfo.request.query("SELECT SpoolInfoObj FROM Job" + GetJobNumber.response.data[0].JobNumber + ".CacheTable_SpoolInfo ");
CommRef_.SpoolInfo = CacheSpoolInfo.response.data
尝试使用是这样的:
....
}else if (t == "SpoolInfo"){
rowsObj = {"Rows":[]};
rowsObj = {"Rows":JSON.parse(CommRef_.SpoolInfo[0].SpoolInfoObj)};
}else{
....
它有一堆额外的"''"东西,用于所有特殊字符,如:
"Rows": [
[
"[['" 1-AII22-84042S01 '",'"1040'r'"],['"0-A102-27564S01 '",'"110'r'"],.....
]
]
因此,输出当然与我保存的JSON结构格式不同。
我有点想使用JSON.stringify()和JSON.parse()来处理这个问题。
我的问题:
我如何处理这一点,以便我取回的数据可以像我将其发送到DB之前一样处理??AKA去掉了所有的小斜线,这样JSON就可以再次解析它。
问题是MySQL在将字符串保存回时添加了转义,因为MySQL不知道JSON是什么,而是将其存储为VARCHAR
。解决这个问题的一个简单方法是在将字符串存储到数据库中之前自己进行转义。
例如,如果你有一个PHP后端,为了存储你会做
$escapedString = mysqli_escape_string($myJSONString);
// Store $escapedString in db
对于,检索,然后进行
$escapedString = // query code
$myJSONString = stripslashes($escapedString);
您处理转义的方式将因后端架构而异。您还可以考虑使用本机支持JSON的数据库。
另一种选择是编写一个JavaScript函数来为您进行剥离(没有本机函数可以做到这一点)。使用一些正则表达式应该是可行的。要了解如何处理此问题,请参阅与剥离斜杠相关的现有SO问题。请注意,您需要稍微更改一下,因为您只想删除转义斜杠,而在该帖子中,OP希望删除所有斜杠(这对JSON来说是错误的,因为您的数据实际上可能包含斜杠)。
相关文章:
- 将地理编码结果转换为php变量以发布到mysql数据库
- 从MySQL数据库中获取输入数据需要两次页面刷新
- 在php和mysql中选择选项.一旦选择了选项,就列出我的sql数据库数据
- 如何使用PHP将javascript变量添加到mysql数据库中
- 在javascript中跳过周六和周日,并向mysql数据库中添加不重复的条目
- 当select标记触发onChange事件时,从mysql数据库加载html表
- 如何使用mysql数据库在node.js中登录API
- 如何比较两个MySql数据库
- 使用node-js上传文件,并将表单信息存储在数据库(mysql)中
- 我应该如何使用node.js和导出来调用mysql数据库
- 输入框值将保存到 MySQL 数据库
- 实时接收来自服务器的消息(数据库-MySQL,前端-Angularjs)
- 如何在不刷新页面的情况下从数据库(mysql)加载更新的数据
- 显示数据库 MySQL 描述字段中的 125 个单词
- 如何将HTML表行拖放到另一个位置(在Jsp中)并将新位置(值)也保存在数据库(MySql)中
- 从数据库mysql中检索数据不起作用
- 将数据库mysql中的文件图像插入excel
- 谷歌地图v3->数据库/mysql->AJAX->LOOP->AJAX->环
- 如何使用javascript与数据库mysql创建数组
- 选择下拉值从数据库mysql中获取填充数据