如何在反应中从 json 构建 SQL 查询?
Posted
技术标签:
【中文标题】如何在反应中从 json 构建 SQL 查询?【英文标题】:How to build a SQL query from a json in react? 【发布时间】:2020-12-04 08:17:26 【问题描述】:我需要将 JSON 修改为具有 SQL 查询格式的值的 JSON。为了更好地解释。
"CASE_0": "fact_dark":"CHC_Fill",
"CASE_2": "Itc_sun":"SEA_Ont"
结果应该是将 json 值作为 sql 查询保留原样。所以结果查询将是:
CASE_0: "fact_dark = 'CHC_Fill'",
CASE_2: "Itc_sun = 'SEA_Ont'"
我本可以继续使用正则表达式,但我无法弄清楚。任何优雅的基于 ES6 的解决方案?请大家帮我解决这个问题。 TIA
【问题讨论】:
您可以手动完成,也可以使用knex.js
之类的查询构建器(如果从 js 对象构建查询是您应用中的常见问题)
不知道 knex.js 但如何手动完成?会不会很乱?
【参考方案1】:
这是一个使用 ES6 reduce
和 entries
方法、字符串模板、数组解构和扩展运算符的解决方案:
const input =
"CASE_0": "fact_dark":"CHC_Fill",
"CASE_2": "Itc_sun":"SEA_Ont"
const output = Object.entries(input).reduce((result, [CASE, caseValue]) =>
const [[key, value]] = Object.entries(caseValue)
return ...result, [CASE]: `$key = '$value'`
, )
console.log(output)
【讨论】:
很好的解决方案....但是如果“CASE_0”的值为 ? 我们不知道在这种情况下的预期输出,您可以将其添加到问题中吗? 输出将只是 无法理解。如果填满,你会得到一个字符串。如果没有值,你得到一个对象?我建议在问题中明确添加案例【参考方案2】:首先,我们必须将对象转换为数组,为此,我们使用Object.entries();
.
然后我们遍历数组并使用map
创建一个新数组,并在map
内部创建一个对象。
然后在console.log();
中,我们使用spread
运算符部署数组并获取我们的对象。
const data =
"CASE_0": "fact_dark":"CHC_Fill",
"CASE_2": "Itc_sun":"SEA_Ont"
;
const result = Object.entries(data).map(n =>
return
[n[0]]: `$Object.keys(n[1]) = '$Object.values(n[1])'`,
;
);
console.log(Object.assign(...result));
【讨论】:
这个接受的答案不符合问题的预期输出...返回一个对象数组而不是一个对象以上是关于如何在反应中从 json 构建 SQL 查询?的主要内容,如果未能解决你的问题,请参考以下文章