Convert json sang multilevel bằng nodejs



  • Hiện em có đoạn json lấy được từ mongo ra thế này ạ:

    [{
      "name" : "Giám đốc",
      "code" : "Director",
      "parent" : {}
    },
    {
      "name" : "Trưởng Phòng KD",
      "code" : "SalesManager",
      "parent" : {
        "name" : "Giám đốc",
        "code" : "Director"
      }
    },
    {
      "name" : "Đại lý",
      "code" : "Reseller",
      "parent" : {
        "name" : "Trưởng Phòng KD",
        "code" : "SalesManager"
      }
    },
    {
      "name" : "Khách hàng",
      "code" : "Customer",
      "parent" : {
        "name" : "Đại lý",
        "code" : "Reseller"
      }
    },
    {
      "name" : "Thành viên",
      "code" : "Member",
      "parent" : {
        "name" : "Khách hàng",
        "code" : "Customer"
      }
    }]
    
    • Giờ em muốn chuyển nó thành dạng Ông->Cha->Cháu thông qua tham số parent bằng node nhưng chưa biết xử lý thế nào.
      Các anh biết chỉ giáo em với ạ, em cảm ơn nhiều ạ.


  • Thất bại tạo hóa vãi đạn, con ông cháu cha làm gì nữa vậy :)
    0_1476358367712_2016101e1a33-5e29-4fef-a57d-1af2ec910ef6.jpeg





  • @ashhole Thế trong nhà bạn, Ông - Cha bạn để làm gì ạ, chẳng nhẽ xếp cùng hàng ngũ luôn để nc cho dễ?
    Mình k hiểu bạn góp ý hay spam đây nhỉ?

    @Quang-Le Em cảm ơn anh ạ, em thấy code bá đẹp mắt + chạy ok rùi ajh :)



  • @Bóng-Đá-Vũ hi bạn, mình góp ý chút.

    Với mongosee nếu bạn tạo các Schema riêng (Giám Đốc, TP, Đại lý, khách hàng) và dùng Ref Id bạn có thể dùng populate kết hợp select để lọc.
    Bạn dùng Native Lib của mongo, đơn giản là thêm một path vào. Ex: "giám đốc" "giám đốc, trưởng phòng" "giám đốc, trưởng phòng, đại lý" sau đó dùng sort và find để tạo cây csdl.
    Khi mà trường Khách hàng có 1000 ông, bạn mà lấy dữ liệu xong mới sắp xếp thì mình nghĩ hiệu suất thấp lắm.

    P/s: mongosee có plugin tree để làm việc này nhé. Bạn nên nghiên cứu thêm



  • @Super-Dick chuẩn ISO @Bóng-Đá-Vũ bạn nên theo hướng của bạn này.



  • @Super-Dick Hi anh, hiện em đang dùng npm mongodb cơ ạ, ban đầu e cũng định hướng thế này nhưng callback lòng vòng mãi k được.
    Mong bác chỉ giáo thêm ạ?



  • @Bóng-Đá-Vũ bạn ấy nói rõ vậy mà bạn, lib mongodb thì dùng path cho từng model như ở đây https://docs.mongodb.com/manual/tutorial/model-tree-structures/

    Một cách khác mình gợi ý nếu bạn muốn nâng cao trình độ là sử dụng cấu trúc dữ liệu lồng nhau (nested sets) . Khi đó bạn mở rộng bao nhiêu nhánh cũng được , nhưng nếu cây dữ liệu của bạn nhỏ thì nên dùng path thôi.


Log in to reply