mysql - 在nodejs-postgresql中显示类别、子类别及其子类别层次结构树(sequelize js)

标签 mysql node.js postgresql express sequelize.js

我的数据库如下:

<小时/>

id |名称 |父ID

1 |类别1 |空

2 |类别2 | 1

3 |类别3 | 2

<小时/>

我的预期输出是

{
  id:1,
  name:"Cate1",
  parentId:null,
  subCate:[
   {
     id:2,
     name:"Cate2",
     parentId:1,
     subCate:[
           {
            id:3,
            name:"Cate3",
            parentId:2,
            subCate:[]
           }
         ]
   }
  ]
} 

等等...

那么如何得到这个结果。

最佳答案

function getNestedChildren(arr, parentId) {
  var out = []
  for (var i in arr) {
    if (arr[i].parentId == parentId) {
      var children = getNestedChildren(arr, arr[i].id)

      if (children.length) {
        arr[i].subCate = children
      }
      out.push(arr[i])
    }
  }
  return out
}

console.log(JSON.stringify(getNestedChildren([
  {id: 1, name: 'edwd', parentId: null},
  {id: 2, name: 'ttt', parentId: null},
  {id: 3, name: 'ooo', parentId: 1},
  {id: 4, name: 'ppp', parentId: 3},
  {id: 5, name: 'lll', parentId: 4},
  {id: 6, name: 'mmm', parentId: 4},
  {id: 7, name: 'nnn', parentId: 3},
  {id: 8, name: 'zzz', parentId: 2}
], null)))

输出:

[
  {
    "id": 1,
    "name": "edwd",
    "parentId": null,
    "subCate": [
      {
        "id": 3,
        "name": "ooo",
        "parentId": 1,
        "subCate": [
          {
            "id": 4,
            "name": "ppp",
            "parentId": 3,
            "subCate": [
              {
                "id": 5,
                "name": "lll",
                "parentId": 4
              },
              {
                "id": 6,
                "name": "mmm",
                "parentId": 4
              }
            ]
          },
          {
            "id": 7,
            "name": "nnn",
            "parentId": 3
          }
        ]
      }
    ]
  },
  {
    "id": 2,
    "name": "ttt",
    "parentId": null,
    "subCate": [
      {
        "id": 8,
        "name": "zzz",
        "parentId": 2
      }
    ]
  }
]

关于mysql - 在nodejs-postgresql中显示类别、子类别及其子类别层次结构树(sequelize js),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58240200/

相关文章:

mysql - 如何在 ec2 bitnami 上修复 (2002, "Can' t connect to local MySQL server through socket '/tmp/mysql.sock' (2)")?

Java Spring框架用mysql返回json

mysql - 如果我使用 MySQL,我的程序是否必须是开源的?

postgresql - 如何决定是将二进制数据存储在 Postgres 中还是文件中?

python - django-import-export - 从 JSON 文件导入 ManyToMany

mysql - 使用 eclipse 和 mysql 创建一个简单的登录页面

javascript - 提取表单数据并使用 node.js 发送到我的数据库

node.js - 将数据从 node.js 添加到 Google BigQuery 表

javascript - 使用 Node/Express 路由 + HIJAX 模式进行渐进增强?

sql - 使用 postgresql 数据库存储 NULL 值需要多少磁盘空间?