如何将JSON数据插入父子表

时间:2018-06-11 16:04:34

标签: javascript mysql node.js

我有一个MySQL表,其结构如下

+------------------+------------------+----------------+
|      comp_id     |       name       |     parent     |
|------------------|------------------|----------------+
|         1        |       comp1      |      NULL      |
+------------------+------------------+----------------+
|         2        |       comp2      |       1        |
+------------------+------------------+----------------+
|         3        |       comp3      |       2        |
+------------------+------------------+----------------+
|         4        |       comp4      |       2        |
+------------------+------------------+----------------+

假设没有数据插入表中。换句话说,假设表是空的,我应该怎么做:

  1. 遍历下面的JSON数据以进入表格:
  2. {
      "org_name":"paradise island",
      "daughters" : [
        {
          "org_name": "banana tree",
          "daughters": [
            {"org_name":"Yellow Banana"},
            {"org_name":"Brown Banana"}
          ]
        },
        {
          "org_name": "big banana tree",
          "daughters": [
            {"org_name":"green banana"},
            {"org_name":"yellow banana"},
            {
              "org_name": "Black banana",
              "daughters": [
                {"org_name": "red spider"}
              ]
            }
          ]
        }
      ]
    }
    
    1. 我可以编写哪些有效的SQL查询,以便立即将上面的JSON插入到MYSQL数据库中。
    2. 我研究了邻接列表模型和嵌套模型的大量资源,但没有详细说明如何通过JSON输入完成插入

1 个答案:

答案 0 :(得分:0)

如果使用uuidv4作为id就可以了,你可以用递归函数标准化你的对象,将uuid作为id添加并构建父母关系。 之后,您只需使用您正在使用的任何数据库客户端批量插入数据。

这是UUIDV4的理想用例。 chance of a collision是不太可能的,所以你可以认为它是安全的。

你必须确保你的uuid发生器足够随机。糟糕的实施可能导致更高的碰撞可能性。

我建议使用uuid包。你可以在github上查找它的来源。它使用节点加密库作为随机数据生成器,根据documentation

加密强大

很高兴知道: MongoDB的ObjectId是在similar way中创建的。它们也不能提供100%的防撞安全性。但他们不太可能认为这个机会无关紧要。

编辑:我假设您的代码在node.js中运行服务器端。在浏览器中生成uuid是不安全的,因为加密api仍然是实验性的,用户可能会试图故意造成冲突。