Resolver là hàm trả về giá trị cho một field.
Server đi theo shape truy vấn và gọi resolver tương ứng cho từng field, nên một truy vấn lồng nhiều tầng kích hoạt cả một cây lời gọi.
const resolvers = {
Post: {
// parent = the Post object, args = field args, ctx = per-request, info = query AST
author: (parent, args, ctx, info) => ctx.loaders.user.load(parent.authorId),
},
}Mỗi resolver nhận bốn thứ: giá trị trả về của field cha; các tham số của field; ngữ cảnh dùng chung cho cả yêu cầu; và thông tin về truy vấn đang chạy.
Ngữ cảnh là chỗ đặt các thứ theo từng yêu cầu như phiên đăng nhập, DataLoader và cache ngắn hạn. Đặt chúng ở phạm vi toàn cục là lỗi bảo mật nghiêm trọng vì dữ liệu người dùng này có thể rò sang yêu cầu của người khác.
Một chi tiết về hiệu năng: nếu không viết resolver cho một field, server dùng resolver mặc định đọc thuộc tính cùng tên từ object cha — đây là lý do một truy vấn trông đơn giản vẫn sinh rất nhiều lời gọi dữ liệu.