how to group Related Items

// index.ts

const coursesList = await db
  .select({ title: courses.title, tags: tags.tag })
  .from(courseTags)
  .leftJoin(courses, eq(courses.id, courseTags.courseId))
  .leftJoin(tags, eq(courseTags.tagId, tags.id));

# actual output

courses: [
  {
    title: "Course 1",
    tags: "Tag 1"
  }, {
    title: "Course 2",
    tags: "Tag 2"
  }, {
    title: "Course 3",
    tags: "Tag 3"
  }, {
    title: "Course 1",
    tags: "tag 4"
  }, {
    title: "Course 1",
    tags: "tag 5"
  }
]

# desired output

courses: [
  {
    title: "Course 1",
    tags: ["Tag 1", "tag 4", "tag 5"]
  }, {
    title: "Course 2",
    tags: ["Tag 2"]
  }, {
    title: "Course 3",
    tags: ["Tag 3"]
  }
]
Was this page helpful?