2017-02-09 2 views
3

Мне нужно установить значение связанного поля для создания, возможно ли это?createUser update related field - понимание отношения

Подробности: У меня есть модель User с полях: email, displayname. У меня есть модель Verify с полями: code, action.

Я создал связь между этими двумя моделями, как это:

Я хочу createUser и установить соответствующие поля code и action одновременно. Я попытался это:

mutation { 
    createUser 
    (
    email:"[email protected]", 
    displayname:"noit", 
    password:"123", 
    code: "this is a code", 
    action: "REGISTER" 
) { 
    id 
    } 
} 

Это терпит неудачу с:

{ 
    "data": null, 
    "errors": [ 
    { 
     "message": "Unknown argument 'code' on field 'createUser' of type 'Mutation'. (line 2, column 76):\n createUser(email: \"[email protected]\", displayname: \"noit\", password: \"123\", code: \"this is a code\", action: \"REGISTER\") {\n                   ^", 
     "locations": [ 
     { 
      "line": 2, 
      "column": 76 
     } 
     ] 
    }, 
    { 
     "message": "Unknown argument 'action' on field 'createUser' of type 'Mutation'. (line 2, column 100):\n createUser(email: \"[email protected]\", displayname: \"noit\", password: \"123\", code: \"this is a code\", action: \"REGISTER\") {\n                         ^", 
     "locations": [ 
     { 
      "line": 2, 
      "column": 100 
     } 
     ] 
    } 
    ] 
} 

ответ

4

Мы специально разработали Graphcool API для рассмотрения дел, как это так просто, как возможно, вы можете сделать это следующим образом:

mutation { 
    createUser (
    email:"[email protected]", 
    displayname:"noit", 
    password:"123", 
    blahVerify: { 
     code: "this is a code", 
     action: "REGISTER" 
    }) { 
    id 
    blahVerify { 
     id 
    } 
    } 
} 

Примечания вложенного blahVerify объекта аргумент.

This answer to a similar question идет немного подробнее, а также показывает, как вы можете использовать переменные GraphQL для отправки вложенных мутаций из Apollo Client.

В качестве опоры, в зависимости от различного возможного значения для узла Verify, вы можете использовать поле перечисления, а не строки. Вы можете узнать больше о полях перечисления in the documentation.

+2

Супер круто спасибо! Я проверю это прямо сейчас! – Noitidart

0

Вы можете сделать это на scaphold.io. Логическая система включает в себя не только обратные вызовы мутаций. Вы можете запускать функции перед мутациями для проверки/очистки ввода до его сохранения в БД после того, как для управления такими соединениями, которые будут возвращены в той же самой полезной нагрузке мутации, и асинхронно (например, обратные вызовы мутаций) для запуска длительных задач. Вы можете даже составлять функции вместе, чтобы передавать метаданные через цепочку вызовов функций.

+1

Интересное спасибо @mparis! Я надеялся, что в graphql вы можете создать связанную запись одновременно (в одной операции) как createUser, разве это невозможно в graphql? Итак, каждая мутация в graphql может влиять только на одну модель за раз? – Noitidart

+1

Вы очень рады :). GraphQL на самом деле ничего не ограничивает, и для реализации необходимо решить, что возможно. Например, вы также можете создавать вложенные объекты, когда они связаны с отношением «один к одному» или «один ко многим» (E.G. https://scaphold.io/docs/#nested-create). Многие из многих немного сложнее, и логические функции после операции могут помочь им справиться. Например, если новый пользователь зарегистрировался, и вы хотели зарегистрировать их в команде (E.G., если они подписались на приложение вроде slack) – mparis

+0

Супер пупер интересный спасибо за все подробности! – Noitidart

Смежные вопросы