Các trường có thể truy cập tại gốc truy vấn GraphQL của bạn được xác định trong lược đồ GraphQL dưới dạng trường truy vấn gốc, thường được đặt tên là Query
. Kiểu này chính xác giống như bất kỳ loại đối tượng GraphQL nào khác trong một lược đồ. Vì vậy, câu hỏi này có thể được đặt lại là:
Các trường GraphQL có khả năng trả về các kết quả khác nhau dựa trên các đối số hoặc loại đối số được truyền vào không?
Câu trả lời ngắn gọn là "không". Một thuộc tính quan trọng của GraphQL là một trường cụ thể phải luôn luôn trả về cùng một kiểu; điều này có nghĩa là trường trả về mảng phải luôn trả về mảng và trường trả về loại đối tượng phải luôn trả về loại cụ thể đó, bất kể đối số được chuyển đến.
Tuy nhiên, có một số cách bạn có thể đạt được kết quả tương tự để tránh cần phải tạo quá nhiều trường có tên khác nhau:
- Trường đồ họa có thể có đối số tùy chọn. Vì vậy, ví dụ nếu bạn có một trường gọi là
individuals
, bạn có thể sử dụng đối số tùy chọn để cung cấp các loại khác nhau của các bộ lọc, ví dụ: individuals(search: "Dan")
hoặc individuals(status: "admin")
, hoặc individuals
(không có đối số) hoặc individuals(status: "admin", search: "Dan")
(cả đối số đã cho cùng một lúc
- GraphQL. Các trường có thể trả về một số kiểu đối tượng, vì vậy nếu trường của bạn có thể trả về nhiều kiểu khác nhau, bạn có thể sử dụng một liên kết. Không có sự kết hợp của một mảng với một loại đối tượng.
Trong nhiều trường hợp, bạn sẽ cần phải tạo nhiều trường vì Gra phQL hiện không có phương pháp quá tải hoặc đa hình.
Tôi không chắc chắn ý của bạn ở đây là "tên truy vấn" - bạn có đang đề cập đến tên trường trên loại truy vấn gốc không? – stubailo
Nó được giải thích ở đây http://graphql.org/learn/queries/ Trong ví dụ trên, tên truy vấn là "cá nhân" –