2016-09-13 19 views
5

Có thể chạy đột biến trên một graphqlType khác từ bên trong một đột biến không? Tôi không chắc đây có phải là một ý hay hay không. Tốt nhất là nên tạo đột biến cho từng loại dữ liệu graphql và sau đó gọi vào từng chức năng đó khi cần. Hy vọng rằng điều này giúp mọi thứ trở nên khô hơn.Gọi đột biến MCLĐ từ một đột biến khác?

Ví dụ: tôi có 2 loại biểu đồ "dự án" và "phòng". Đối với mỗi dự án một phòng cần phải được tạo ra và ID được đặt trong dự án để tham khảo sau này.

Tôi thấy 3 cách để làm điều này:

  • Từ cuối trước, chạy 2 truy vấn graphql khác nhau (cho một dự án mới và một căn phòng mới) và một thức cập nhật dự án với phòng mới ID.
  • Trên máy chủ phụ trợ/graphql. Chỉ cần xử lý tất cả các cuộc gọi db bên trong một hàm phân giải để đơn giản, trả về dự án và phòng đã được tạo.
  • Chạy đột biến bên trong đột biến. Gọi vào phòng tạo chức năng từ chức năng tạo dự án và trả về cả hai tập dữ liệu.

Vẫn học các dây với graphql để mọi thông tin chi tiết về thực hành tốt sẽ tuyệt vời như thế nào.

Trả lời

0

Cách phổ biến nhất để thực hiện việc này là trên móc afterInsert (hoặc được đặt tên tương tự). Vì vậy, trong trường hợp này, sau khi "phòng" đã được tạo, tạo "dự án" trong móc sau khi chèn.

+0

Vâng, đây là những gì tôi đã làm. Gọi hàm tiếp theo về thành công của hàm đầu tiên. Trong trường hợp của tôi, tôi muốn làm điều đó thông qua ngôn ngữ truy vấn graphql. – Justin

0

Tôi chắc chắn bạn đã tìm ra giải pháp cho vấn đề của mình từ lâu, nhưng tại sao không chỉ tạo đột biến nắm bắt toàn bộ quá trình, như createProjectAndRoom? Tôi nghĩ rằng đó là một sai lầm khi nghĩ GraphQL phân giải khi lập bản đồ rất cứng nhắc đối với các hành động đơn lẻ trên các mô hình đơn lẻ.

Các vấn đề liên quan