葬空吟 2023-11-09 08:54 采纳率: 61%
浏览 2
已结题

jsmind思维导图的数据存储

使用jsmind做出来的思维导图,前端的数据样式如下显示,当存储到MySQL数据库时,应该如何处理?不要简单粗暴的直接把data存到数据库中那种的,要每个层级,每个节点单独存入一条数据的

this.mind = {
        /* 元数据,定义思维导图的名称、作者、版本等信息 */
        meta: {
          name: "jsMind-demo-tree",
          author: "hizzgdev@163.com",
          version: "0.2",
        },
        /* 数据格式声明 */
        format: "node_tree",
        /* 数据内容 */
        data: {
          id: "root",
          topic: "jsMind",
          children: [
            {
              id: "easy",
              topic: "Easy",
              direction: "right",
              expanded: false,
              children: [
                { id: "easy1", topic: "Easy to show" },
                { id: "easy2", topic: "Easy to edit" },
                { id: "easy3", topic: "Easy to store" },
                { id: "easy4", topic: "Easy to embed" },
              ],
            },
            {
              id: "open",
              topic: "Open Source",
              direction: "right",
              expanded: true,
              children: [
                { id: "open1", topic: "on GitHub" },
                { id: "open2", topic: "BSD License" },
              ],
            },
            {
              id: "powerful",
              topic: "Powerful",
              direction: "right",
              children: [
                { id: "powerful1", topic: "Base on Javascript",'background-color':'#ff0000' },
                { id: "powerful2", topic: "Base on HTML5" },
                { id: "powerful3", topic: "Depends on you" },
              ],
            },
            {
              id: "other",
              topic: "test node",
              direction: "right",
              children: [
                { id: "other1", topic: "I'm from local variable" },
                { id: "other2", topic: "I can do everything" },
              ],
            },
          ],
        },
      };

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-11-09 10:55
    关注

    【以下回答由 GPT 生成】

    首先,我们需要设计数据库表来存储思维导图的数据。考虑到思维导图的数据结构,我们可以设计两个表,一个用于存储节点信息,一个用于存储节点之间的层级关系。

    节点表

    节点表存储每个节点的详细信息,包括节点ID、节点主题、方向等。

    字段名类型说明
    idINT节点ID
    topicVARCHAR(255)节点主题
    directionVARCHAR(10)节点方向
    background_colorVARCHAR(10)背景颜色

    层级关系表

    层级关系表用于描述节点之间的层级关系,每条记录表示一个父节点和一个子节点之间的关系。

    字段名类型说明
    parent_idINT父节点ID
    child_idINT子节点ID

    接下来,我们可以编写代码来将jsMind中的数据存储到MySQL数据库中。

    import pymysql
    
    def connect_database():
        """连接数据库"""
        host = 'localhost'
        user = 'your_username'
        password = 'your_password'
        database = 'your_database'
        conn = pymysql.connect(host=host, user=user, password=password, database=database)
        return conn
    
    def create_tables(conn):
        """创建节点表和层级关系表"""
        cursor = conn.cursor()
        node_table = '''
        CREATE TABLE IF NOT EXISTS node (
            id INT PRIMARY KEY,
            topic VARCHAR(255),
            direction VARCHAR(10),
            background_color VARCHAR(10)
        )
        '''
        cursor.execute(node_table)
    
        relation_table = '''
        CREATE TABLE IF NOT EXISTS relation (
            parent_id INT,
            child_id INT,
            FOREIGN KEY (parent_id) REFERENCES node(id),
            FOREIGN KEY (child_id) REFERENCES node(id)
        )
        '''
        cursor.execute(relation_table)
    
        conn.commit()
    
    def save_mindmap_data(conn, mind):
        """存储思维导图数据"""
        cursor = conn.cursor()
    
        def save_node(node):
            """递归保存节点数据"""
            node_id = node['id']
            topic = node['topic']
            direction = node.get('direction', '')
            background_color = node.get('background-color', '')
            cursor.execute("INSERT INTO node (id, topic, direction, background_color) VALUES (%s, %s, %s, %s)", (node_id, topic, direction, background_color))
    
            children = node.get('children', [])
            for child in children:
                child_id = child['id']
                cursor.execute("INSERT INTO relation (parent_id, child_id) VALUES (%s, %s)", (node_id, child_id))
                save_node(child)
    
        save_node(mind['data'])
    
        conn.commit()
    
    def main():
        conn = connect_database()
        create_tables(conn)
        save_mindmap_data(conn, this.mind)
        conn.close()
    
    if __name__ == "__main__":
        main()
    

    以上是一个Python代码示例,实现了将jsMind的思维导图数据存储到MySQL数据库中的功能。

    请替换代码中的数据库连接信息(host、user、password、database),并确保已安装PyMySQL库。

    运行代码后,将会创建节点表和层级关系表,并将思维导图数据存储到这两个表中。

    注意:该示例仅展示了如何存储思维导图中的节点和层级关系数据,并未涉及到其他jsMind的功能,如展开状态等。如果需要完整地存储和还原jsMind的数据,可能需要进一步的处理和设计。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 1月23日
  • 已采纳回答 1月23日
  • 创建了问题 11月9日

悬赏问题

  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?
  • ¥15 部分客户订单定位有误的问题
  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
  • ¥15 Bug traq 数据包 大概什么价
  • ¥15 在anaconda上pytorch和paddle paddle下载报错
  • ¥25 自动填写QQ腾讯文档收集表