我需要将用户表单中的数据插入到 bigquery 中,我想知道清理/转义/清理数据的最佳方法是什么。我正在使用 Google Cloud BigQuery library .
是否可以使用 Parameterized Queries在这个图书馆的插入?我不确定如何,也许我需要使用 sql insert 而不是使用 Node 库 insert(jsObject)?现在我在每个字符串上使用 mysql 转义库,然后再放入 JS 对象,但我不确定这是否安全?
这是插入的样子:
bigquery
.dataset("analytics")
.table("actions")
.insert(someJSObjectWithUserInputData)
.then(() => {
console.log(`Inserted row`);
})
最佳答案
当通过加载作业或流式 API 运行插入时,您不需要为了安全而转义数据。题中table.insert
是流数据进来的,所以不用担心转义的问题。
如果您选择使用新的支持 DML 语句INSERT INTO
,那么您将不得不担心转义问题。在这种情况下,您可以使用提到的参数化查询。您可以使用 @param_name
等标识符和 ?
的位置参数。
对于那种情况下的 Node.JS,您需要使用以下 API 引用,特别是 params
:
params: For positional SQL parameters, provide an array of values. For named SQL parameters, provide an object which maps each named parameter to its value.
https://cloud.google.com/nodejs/docs/reference/bigquery/1.2.x/BigQuery#query
关于javascript - 如何安全地转义 bigquery Node 插入的用户输入?可以在 bigquery.insert Node 库上使用参数化查询吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50419771/