2017-02-21 2 views
1

ストア接続からストアを削除しようとしています。私はエラーが続いています:NODE_DELETEを使用してリレーストアを更新しようとするとエラーが発生します。未知のエラー:RelayMutationQuery:接続するビューアに予想されるフィールド `店舗 '

キャッチしないエラー:RelayMutationQuery:に接続するフィールドstoresが必要です。

マイビューアオブジェクトは、次のようなものです:

{ 
    "__dataID__":"VXNlcjp2aWV3ZXJfZml4ZWQ=", 
    "id":"VXNlcjp2aWV3ZXJfZml4ZWQ=", 
    "stores":{ 
    "__dataID__":"client:-1121235371", 
    "edges":[ 
     { 
     "__dataID__":"client:-1121235372", 
     "node":{ 
      "__dataID__":"U3RvcmU6NTg0MmIwODE1ZDY0NTY1NWU4NTVhOTc1", 
      "id":"U3RvcmU6NTg0MmIwODE1ZDY0NTY1NWU4NTVhOTc1", 
      "_id":"5842b0815d645655e855a976", 
      "address":null, 
      "closingHours":null, 
      "contactNumber":null, 
      "name":"s5", 
      "openingHours":null, 
      "isActive":true 
     } 
    }, 
    { 
     "__dataID__":"client:-1121235373", 
     "node":{ 
      "__dataID__":"U3RvcmU6NThhYmM2ZjcyNTgyNjI5NDVhYzZkMGEx", 
      "id":"U3RvcmU6NThhYmM2ZjcyNTgyNjI5NDVhYzZkMGEx", 
      "_id":"58abc6f7258262945ac6d0a2", 
      "address":null, 
      "closingHours":null, 
      "contactNumber":null, 
      "name":"Dete", 
      "openingHours":null, 
      "isActive":true 
     } 
    } 
    ] 
    } 
} 

そして、私の突然変異ファイルは次のとおりです。

import Relay from 'react-relay'; 

export default class DeleteStoreMutation extends Relay.Mutation { 
    getMutation() { 
    return Relay.QL`mutation{ DeleteStoreMutation }`; 
    } 

    getFatQuery() { 
    return Relay.QL` 
     fragment on DeleteStoreMutationPayload { 
     viewer 
     deletedId 
     } 
    `; 
    } 

    getConfigs() { 
    console.log(this.props.viewer); 
    return [{ 
     type: 'NODE_DELETE', 
     parentName: 'viewer', 
     parentID: this.props.viewer.id, 
     connectionName: 'stores', 
     deletedIDFieldName: 'deletedId' 
    }]; 
    } 

    getVariables() { 
    return { 
     _id: this.props.storeId, 
    }; 
    } 
} 

GraphQLスキーマindex.js

import { UserType } from './types' 
import { GraphQLObjectType, GraphQLSchema } from 'graphql' 
import { nodeField, nodeInterface } from './node' 
import modules from './modules' 
import { AuthService } from '../services' 

let RootQuery = new GraphQLObjectType({ 
    name: 'RootQuery', 
    fields: { 
    viewer: { 
     type: UserType, 
     resolve: async ({ viewerId }) => AuthService.getViewer(viewerId) 
    }, 
    node: nodeField 
    } 
}); 


let RootMutation = new GraphQLObjectType({ 
    name: "RootMutation", 
    fields:() => ({ ...modules.mutations }) 
}); 

let schema = new GraphQLSchema({ 
    query: RootQuery, 
    mutation: RootMutation 
}); 

輸出デフォルトのスキーマ。

UserType.jsはスニペット

const UserType = new GraphQLObjectType({ 
    name: 'User', 
    description: 'A user', 
    fields:() => ({ 
    id: globalIdField(), 
    _id: { 
     type: GraphQLID 
    }, 
    stores: { 
     type: StoreConnection, 
     resolve: (user) => StoreService.getStores(user) 
    }, 
    }), 

    interfaces: [nodeInterface] 
}); 

ストア接続type.jsそれはここ(おそらく)問題のように見える

import { GraphQLObjectType, GraphQLList, GraphQLNonNull } from 'graphql'; 
import PageInfo from './page-info-type' 
import Cursor from './cursor-type' 
import StoreType from './store-type' 

const StoreEdge = new GraphQLObjectType({ 
    name: 'StoreEdge', 
    fields:() => ({ 
    cursor: { 
     type: Cursor, 
     resolve: (store) => ({ value: store._id.toString() }) 
    }, 
    node: { 
     type: StoreType, 
     resolve: (store) => store 
    }, 
    }), 
}); 

const StoreConnection = new GraphQLObjectType({ 
    name: 'StoreConnection', 
    fields:() => ({ 
    edges: { 
     type: new GraphQLList(StoreEdge), 
     resolve: (stores) => stores 
    }, 
    pageInfo: { 
     type: PageInfo, 
     resolve:() => ({hasNextPage: false, hasPreviousPage: false}) 
    }, 
    }), 
}); 

export default StoreConnection; 

GraphiQL Screenshot

+0

GraphQLスキーマからビューアタイプの定義を提供できますか?私は、 "店舗"はリストであり、接続ではないと考えています。 – NevilleS

+0

@NevillS私はより多くの情報で質問を更新しました。どんな助けも素晴らしいだろう。ありがとう、トン。 –

+0

OKですので、 'stores'フィールドが有効なGraphQL接続であるように見えます。しかし、Relay突然変異の問い合わせ論理は一致しないので、不完全な情報に作用しているに違いありません。 – NevilleS

答えて

0

はその突然変異クエリ構築ロジック不完全な情報によって混乱しています。理論的にはローカルのグラフでデータにアクセスできるはずですが、これらのタイプの防御検証がどの段階で実行されているかは100%確信していません。

は、私はより具体的には、あなたの脂肪のクエリを更新するお勧めします:

Relay.QL` 
     fragment on DeleteStoreMutationPayload { 
     viewer { 
      stores 
     } 
     deletedId 
     } 
` 

私はその突然変異の設定は、あなたがそれを与えるときに表示することを期待するものです約50%確信しているの両方parentNameconnectionName

+0

ええ、私はそれが本当だと確信しています。エラーメッセージはここでもうちょっと役立つかもしれません(私は問題が "ストア"は太いクエリではなく、 "ストア"は接続ではない)ということです。しかし、特有のエラーメッセージを持つことは、必ずしも容易ではありません! – NevilleS

+0

私はあなたが示唆していることを試しましたが、残念ながらエラーはまだ同じです:( –

+0

OK、多分サーバー側の突然変異型がうわさです。 – NevilleS

0

私は修正を見つけました。 StoreConnectionはどのリレーも接続として認識していなかったため、この場合はconnectionArgsの引数を取っていませんでした。

[店舗]フィールドにconnectionArgsを追加することで修正しました。

関連する問題