2017-07-07 4 views
2

私はgraphqlサーバを持っていますが、エンティティのステータスが更新されるたびにイベントをトリガしようとしています。エンティティを更新するための突然変異があります。graphql-subscriptionsを使用して、サブスクライバが待機するように更新プログラムを公開しています。しかし、pubsub.subscribe(EVENT_NAME)が変更を受け取りましたが、それをサブスクリプションリゾルバに統合すると、更新がトリガされません。Apolloサブスクリプションが動作しない

簡潔にするため、問題に関係のないコードの部分を編集しました。

マイリゾルバ:

Mutation: { 
    updateStatus(_, { id, status, hash }) { 
    return repository.updateStatus(id, status, hash); 
    } 
}, 
Subscription: { 
    updatedStatus: { 
    subscribe:() => pubsub.asyncIterator('updatedStatus'), 
    } 
}, 

マイリポジトリ:

export const updateStatus = async function(id: String, status: String, hash: String) { 
    try { 
    const res = await fetch(`${baseURL}/article/${id}/status?publish_hash=${hash}`, { 
     headers, 
     method: 'PATCH', 
     body: JSON.stringify({ status }) 
    }); 

    const article = await fetchSingleArticle(id, 'XML', headers.channel, false); 

    await pubsub.publish('updatedStatus', article); 
    return article; 
    } catch (e) { 
    console.log(e.message); 
    } 
} 

マイスキーマ:

type Mutation { 
    updateStatus(id: ID!, status: PublishingStatus = PUBLISHING, hash: String): Article 
} 

type Subscription { 
    updatedStatus(id: ID!): Article 
} 

schema { 
    query: Query 
    mutation: Mutation 
    subscription: Subscription 
} 

これをテストするために、私はちょうど拾っされ、graphiqlを使用していますWebSocketの接続は問題ありません。

article(図のように)と{ updatedStatus: article }の両方を使用して公開しようとしましたが、いずれも取得されていないようです。

前述のように、pubsub.subscribe('updatedStatus')は変更を受け取ります。したがって、この問題はサブスクリプション・リゾルバに関連しているようです。

私は、次のドキュメントをオフつもりです:http://dev.apollodata.com/tools/graphql-subscriptions/setup.html#setup

答えて

0

は、私は、日付graphqlパッケージのアウトを使用していたが判明!最新のバージョンに更新するとこの問題は解決しました。

関連する問題