truongduchuy910 / PBL6_Social

Đồ án môn học đề tài phát triển ứng dụng mạng xã hội
MIT License
0 stars 0 forks source link

Chi tiết về GraphQL API

Lấy dữ liệu

allUsers

Lấy tất cả bản ghi trong danh sách User. Truy vấn allUsers cho phép tìm kiếm, giới hạn và lọc các kết quả. Chi tiết xem bên dưới:

query {
  allUsers {
    id
  }
}

_allUsersMeta

Tương tự như allUsers. _allUsersMeta trả về tổng số bản ghi hợp lệ vào count.

query {
  _allUsersMeta {
    count
  }
}

User

Truy cập chính xác đến bản ghi trong danh sách User. Truy vấn này bắt buộc có $id

query {
  User(where: { id: $id }) {
    name
  }
}

_UsersMeta

Trả về thông tin của chính danh sách User, chẳng hạn như trạng thái phân quyền.

Thêm, sửa, xóa

Có 6 phương thức

createUser

Thêm một User vào danh sách. Yêu cầu có tham số data

mutation {
  createUser(data: { name: "Mike" }) {
    id
  }
}

createUsers

Tạo nhiều Users. Đầu vào tương tự như createUser nhưng ở đây có dạng là [data, data,...]

mutation {
  createUsers(data: [{ data: { name: "Mike" } }, { data: { name: "Maher" } }]) {
    id
    name
  }
}

updateUser

Cập nhật User thông qua ID.

mutation {
  updateUser(id: ID, data: { name: "Simon" }) {
    id
  }
}

updateUsers

Cập nhật nhiều Users thông qua ID. Tham số truyền vào tương tự như createUser. Cần được bao trong bảng và truyền vào biến data như ví dụ

mutation {
  updateUsers(data: [{ id: ID, data: { name: "Simon" } }]) {
    id
  }
}

deleteUser

Xóa một User thông qua ID

mutation {
  deleteUser(id: ID) {
    id
  }
}

deleteUsers

Xóa nhiều User thông qua danh sách ID

mutation {
  deleteUsers(ids: [ID]) {
    id
  }
}

Lọc, giới hạn, sắp xếp

Bên trong tham số của truy vấn chúng ta có thể thêm:

where

Giới hạn số kết quả trả về đúng với điều kiện truyền vào.

query {
  allUsers(where: { name_starts_with_i: "A" }) {
    id
  }
}

lọc trường là một Relationship where

lọc trường là một String where

lọc trường là một ID where

lọc trường là một Integer where

Toán tử

Có hai toán tử

query {
  allUsers(where: { OR: [{ name_starts_with_i: "A" }, { email_starts_with_i: "A" }] }) {
    id
  }
}

search

Sẽ tìm kiếm danh sách theo trường name

query {
  allUsers(search: "Mike") {
    id
  }
}

sortBy

Sắp xếp kết quả

Kiểu được cung cấp (lấy ví dụ cho bảng User)

enum SortUsersBy {
  id_ASC
  id_DESC
  name_ASC
  name_DESC
  email_ASC
  email_DESC
}

sortBy cho phép một hoặc nhiều giá trị tham gia vào điều kiện sắp xếp.

query {
  allUsers(sortBy: name_DESC) {
    id
  }
}
query {
  allUsers(sortBy: [name_DESC, email_ASC]) {
    id
  }
}

first

Giới hạn số kết quả trả về trong truy vấn. Sau khi áp dụng các tham số sau: skip, sortBy, where and search.

query {
  allUsers(first: 10) {
    id
  }
}

skip

Bỏ qua các số bản ghi đầu tìm thấy theo chỉ định. Nó được áp dụng trước khi first, nhưng sau sortBy, where and search.

If the value of skip is greater than the number of available results, zero results will be returned.

query {
  allUsers(skip: 10) {
    id
  }
}