2017-10-27 4 views
1

私はクライアントにReactJS with Relayを使用しています。私は私のGraphQLServerから送信されるエラー応答を処理するにはどうすればよいRelay Modernで突然変異のエラーを処理する方法は?

import { 
    commitMutation, 
    graphql 
} from 'react-relay'; 

import environment from '../../../../environment'; 


const mutation = graphql` 
    mutation CompanyMutation($company: CompanyInput!) { 
     createCompany(data: $company) { 
      id 
     } 
    } 
` 

export const createCompany = (company, callback) => { 

console.log(company); 

    const variables = { 
     company: company 
    } 

    commitMutation(
     environment, 
     { 
      mutation, 
      variables, 
      onCompleted:() => { 
       callback() 
      }, 
      onError: (error) => { 
       throw new Error(error) 
      }, 
     }, 
    ); 
} 

:以下の変異を検討している場合には

{ 
    "errors": [ 
    { 
     "message": "E11000 duplicate key error collection: mom.companies index: name_1 dup key: { : \"TEST 

\" }", 
     "locations": [ 
     { 
      "line": 4, 
      "column": 3 
     } 
     ], 
     "stack": "WriteError({\"code\":11000,\"index\":0,\"errmsg\":\"E11000 duplicate key error collection: mom.companies index: name_1 dup key: { : \\\"RENATO\\\" }\",\"op\":{\"createdAt\":1509103201877,\"deleted\":false,\"name\":\"TEST\",\"ein\":\"1234\",\"test\":false,\"multiSite\":true,\"siteLimit\":10,\"enabled\":false,\"_id\":\"59f316618ba865186815d3de\",\"__v\":0}})\n at Function.MongoError.create (D:\\9. DEV\\WORKSPACE\\momejected\\node_modules\\mongodb-core\\lib\\error.js:31:11)\n at toError (D:\\9. DEV\\WORKSPACE\\momejected\\node_modules\\mongodb\\lib\\utils.js:139:22)\n at D:\\9. DEV\\WORKSPACE\\momejected\\node_modules\\mongodb\\lib\\collection.js:669:23\n at handleCallback (D:\\9. DEV\\WORKSPACE\\momejected\\node_modules\\mongodb\\lib\\utils.js:120:56)\n at D:\\9. DEV\\WORKSPACE\\momejected\\node_modules\\mongodb\\lib\\bulk\\unordered.js:465:9\n at handleCallback (D:\\9. DEV\\WORKSPACE\\momejected\\node_modules\\mongodb\\lib\\utils.js:120:56)\n at resultHandler (D:\\9. DEV\\WORKSPACE\\momejected\\node_modules\\mongodb\\lib\\bulk\\unordered.js:413:5)\n at D:\\9. DEV\\WORKSPACE\\momejected\\node_modules\\mongodb-core\\lib\\connection\\pool.js:469:18\n at _combinedTickCallback (internal/process/next_tick.js:67:7)\n at process._tickDomainCallback (internal/process/next_tick.js:122:9)", 
     "path": [ 
     "createCompany" 
     ] 
    } 
    ], 
    "data": { 
    "createCompany": null 
    } 
} 

を、onErrorは呼び出されません。

突然変異の中でこの返されたエラーを捕捉して処理するにはどうすればよいですか?

答えて

0

onCompletedは、この文書Relay Modern Mutations

にしかし、私の意見ではresponseerrorをしている2つのパラメータ戻り、コールバック関数は、私はちょうどこの

export const createCompany = (company) => 
    new Promise((resolve, reject) => { 
    const variables = { 
     company 
    }; 

    commitMutation(
     environment, 
     { 
     mutation, 
     variables, 
     onCompleted: (resp, err) => { 
      if (err) return reject(err); 
      return resolve(resp); 
     }, 
     onError: (err) => { 
      return reject(err); 
     } 
     } 
    ); 
    }); 
のように約束し、それを変更取り扱いが容易ではないんだろう

コンポーネントの呼び出し方法

createCompany(company) 
    .then((resp) => { 
    // handle your response here.. 
    }) 
    .catch((err) => { 
    // handle your error here.. 
    }) 
関連する問題