2016-07-07 23 views
4

正常的創建Relay query對象爲單定義查詢可以做到用:更新繼電器店有多重定義

const relayQuery = Relay.QL ` 
    query UserRoute($id_0: ID!) { 
    user(id:$id_0) { 
     id, 
     name, 
     email 
    } 
    } 
; 

我已經查詢字符串從正在通過網絡發送的一個截獲。他們通常有多個定義(例如查詢,片段,變異,訂閱)。我想爲該類型的查詢創建一個Relay query object。下面的代碼拋出錯誤:

Relay transform error "You supplied a GraphQL document named 'network' with 2 definitions, but it must have exactly one definition." in file '/Users/ankitshah/lyearnapp/src/network.js'. Try updating your GraphQL schema if an argument/field/type was recently added.

此代碼:

const relayQuery = Relay.QL ` 
    query UserRoute($id_0: ID!) { 
    user(id:$id_0) { 
     id, 
     ...F0 
    } 
    } 
    fragment F0 on User { 
    id, 
    name, 
    email 
    } 
; 

我想這是因爲我想用Relay.Store.getStoreData().updateQueryPayload(queryObject, payload)功能來更新繼電器商店。任何幫助表示讚賞。

+0

是你的問題解決了。, –

回答

0

我遇到了同樣的錯誤。你需要將你的查詢壓縮成沒有這樣的片段:

const relayQuery = Relay.QL ` 
    query UserRoute($id_0: ID!) { 
    user(id:$id_0) { 
     id, 
     name, 
     email 
    } 
    } 
; 

然後它工作。

0

嘗試使用namedspaces。例如

user1 :user(id:$id_0) { 
    id, 
    name, 
    email 

}

user2 :user(id:$id_1) { 
    id, 
    name, 
    email 

}