XiaoMi/soar

去除SQL中的注释问题

zyf-source opened this issue · 2 comments

sql:

INSERT INTO action (action_params, action_expression)
VALUES
('{"params":"Map"}', 'function() {\n var person_list = $api.getDataListByAuth('acv_ps_rept_list', {\n 'sub_emplid': $params.filter,\n '#NEED_COUNT#': false\n });\n var retArr = [];\n for (var i = 0; i < person_list.length; i++) {\n if (person_list[i].data != null && person_list[i].data.acv_ps_direct_rep != null) {\n var avatar = $api.getPhotoUrlByEmplid(person_list[i].data.acv_ps_direct_rep.emplid);\n if (!avatar) {\n avatar = $api.getXMPhotoUrlByEmplid(person_list[i].data.acv_ps_direct_rep.emplid)\n }\n retArr.push({\n mis: person_list[i].data.acv_ps_direct_rep.mis,\n name: person_list[i].data.acv_ps_direct_rep.name,\n emplid: person_list[i].data.acv_ps_direct_rep.emplid,\n deptNamePath: person_list[i].data.acv_ps_direct_rep.deptNamePath,\n dept_path: person_list[i].data.acv_ps_direct_rep.deptNamePath.startsWith('') ? person_list[i].data.acv_ps_direct_rep.deptNamePath.substring(1).replaceAll('', '/') : person_list[i].data.acv_ps_direct_rep.deptNamePath.replaceAll('_', '/'),\n avatar: avatar,\n supervis_empl_rcd: person_list[i].data.acv_ps_direct_rep.supervis_empl_rcd,\n empl_rcd: person_list[i].data.acv_ps_direct_rep.empl_rcd\n })\n }\n }\n return {\n dataList: retArr\n }\n}');

这样的sql语法和功能是正常的,在调用services/sql.go中RemoveSQLComments后,sql语句中的值被误去除,造成语法错误

上面的sql没有展示正确,'其实转义的,下面是真正的sql
INSERT INTO action (action_params, action_expression)
VALUES
('{"params":"Map"}', 'function() {\n var person_list = $api.getDataListByAuth(\'acv_ps_rept_list\', {\n \'sub_emplid\': $params.filter,\n \'#NEED_COUNT#\': false\n });\n var retArr = [];\n for (var i = 0; i < person_list.length; i++) {\n if (person_list[i].data != null && person_list[i].data.acv_ps_direct_rep != null) {\n var avatar = $api.getPhotoUrlByEmplid(person_list[i].data.acv_ps_direct_rep.emplid);\n if (!avatar) {\n avatar = $api.getXMPhotoUrlByEmplid(person_list[i].data.acv_ps_direct_rep.emplid)\n }\n retArr.push({\n mis: person_list[i].data.acv_ps_direct_rep.mis,\n name: person_list[i].data.acv_ps_direct_rep.name,\n emplid: person_list[i].data.acv_ps_direct_rep.emplid,\n deptNamePath: person_list[i].data.acv_ps_direct_rep.deptNamePath,\n dept_path: person_list[i].data.acv_ps_direct_rep.deptNamePath.startsWith(\'\') ? person_list[i].data.acv_ps_direct_rep.deptNamePath.substring(1).replaceAll(\'\', \'/\') : person_list[i].data.acv_ps_direct_rep.deptNamePath.replaceAll(\'_\', \'/\'),\n avatar: avatar,\n supervis_empl_rcd: person_list[i].data.acv_ps_direct_rep.supervis_empl_rcd,\n empl_rcd: person_list[i].data.acv_ps_direct_rep.empl_rcd\n })\n }\n }\n return {\n dataList: retArr\n }\n}');

问题可以简化为: insert into action(action_params, action_expression) values('a', 'c\'#aaa');