javascript - 如何清理要插入 Carto Table 的用户输入数据?
问题描述
我有一个将用户提供的地理数据和用户输入的评论插入 Carto 表的应用程序。Carto SQL API通过参数传递一个完整的 PostgreSQL 查询来工作q
。如何在 javascript 中构造查询字符串以通过 POST 调用传递给 API,以便单引号不会破坏我的查询?
目前我正在做类似的事情
var sql = "SELECT insert_data('" + user_input +"');";
$.ajax({type: 'POST',
url: 'https://' + config.cartoUsername + '.carto.com/api/v2/sql', //Sending the data to Carto
crossDomain: true,
data: {"q": sql},
dataType: 'json',
success: function(responseData, textStatus, jqXHR) {
console.log("Data saved");
},
error: function(responseData, textStatus, errorThrown) {
console.log("Problem saving the data");
}
});
如果我提交类似的东西,I'm here
我会收到 400 错误
{"error":["syntax error at or near \"m\""]}
因为查询看起来像:
SELECT insert_data('I'm here');
是否有方便的前端 javascript 库可以像这样清理 SQL 输入?
解决方案
试试这种格式的user_input
.
var user_input = "I am her";
console.log("SELECT insert_data(" + user_input +");");
此查询将如下所示:SELECT insert_data(I am here);
推荐阅读
- python - CSV 使用 Pandas 将 LF 格式化为 CRLF
- swift - 如何为每个 UIpicker 行分配数字
- c# - 旧 ASP.NET Web 窗体应用程序中的数据集到 XML 文件
- reactjs - React 中的动画文本
- google-sheets - 如何根据不同的单元格值获取单元格的百分比?
- python - Tensorflow - 获取自动编码器的隐藏层输出
- css-selectors - 如何在 tailwindcss 中使用伪选择器 before::after?
- armeria - 使用 context.log().whenComplete() 对 Armeria 的装饰器进行单元测试
- reactjs - 根据版本显示 Cloudinary React Image
- vba - 将 Excel 工作簿中的所有图表导出到 windows 文件夹