2017-03-02 19 views
0

我已經寫了下面的代碼的對象:片段「F1」在這裏不能傳播類型的「節點」絕不是類型「商店」

在以下方法中的某些用戶操作被稱爲:

handleFolderClicked = (topic, parent) => { 
    console.log('Main : handleFolderClicked called : ', parent); 
    this.props.relay.setVariables({ 
     parentFolder: parent, 
     email: loginEmail 
    }); 
    } 

Main = Relay.createContainer(Main, { 
    initialVariables: { 
    pageSize: pageSize, 
    email: loginEmail, 
    parentFolder: parentFolder, 
    }, 
    fragments: { 
    store:() => Relay.QL` 
     fragment on Store { 
     id, 
     fileConnection(first:999, email:$email, parentFolder:$parentFolder) { 
      ${DirectoryListing.getFragment('files')}, 
     } 
     users { 
      email, 
     } 
     } 
    `, 
    } 
}); 
export default Main; 

在頁面加載時它的工作正常並且獲取結果,但是當使用setVariables更改parentFolder的值時,它會拋出上面的錯誤。

洞察可能是有用的和讚賞。由於

回答

0

我有這個錯誤,我解決了這樣的事情:

Store必須實現接力的Node接口,這意味着它必須提供一個id: ID!領域,如果你使用返回的ID的節點查詢,您的Store必須退回。

在我的情況下,我將我的根對象viewer命名爲Viewer;所以實現Node接口後,該查詢有工作:

{ 
    viewer { 
    id 
    } 
} 

將返回:

{ 
    "data": { 
    "viewer": { 
     "id": "Vmlld2VyOk5vbmU=" 
    } 
    } 
} 

現在,如果我使用該ID運行節點查詢,觀衆必須被退回。因此,對於查詢:

{ 
    node(id: "Vmlld2VyOk5vbmU=") { 
    id, 
    __typename 
    } 
} 

這應該是結果:

{ 
    "data": { 
    "node": { 
     "id": "Vmlld2VyOk5vbmU=", 
     "__typename": "Viewer" 
    } 
    } 
} 

store/Store更換的viewer/Viewer所有出現的,它應該工作。

+0

@Mandex:讓我檢查它是否有效,會回來! –