如何在反应中从 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 reduceentries 方法、字符串模板、数组解构和扩展运算符的解决方案:

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 查询?的主要内容,如果未能解决你的问题,请参考以下文章

如何在反应中从json文件中获取数据?

如何在本机反应中从平面列表中设置 Json 数组

我如何在本机反应中从 json 中选择特定值?

如何在反应打字稿中从json文件中获取和显示数据

如何在 Vue 中从 JSON 构建动态 HTML 控件?

如何在反应节点 js 项目中从客户端创建动态元标记?