2016-11-05 37 views
0

我正在使用Rex針對我的Firebase上的React Native應用程序發出更新請求。Firebase更新方法產生Promise Rejection

這裏是我的終極版片斷

export function buyTicket(eventID) { 
    const { currentUser } = firebase.auth(); 
    return (dispatch) => { 
    firebase.database().ref(`/Users/${currentUser.uid}/joinedEvent`).update({ [eventID]: true }) 
     .then(() => dispatch({ type: BUY_TICKET_SUCCESS })) 
     .catch(() => dispatch({ type: BUY_TICKET_FAIL })); 
    }; 
}; 

當buyTicket函數被調用,只是當時()方法應當預期,但隨後都()和catch()得到調用。

根據Firebase文檔,update()會產生一個承諾,但它是可選的。

這裏是我得到 Error

錯誤這是我減速

export default (state = INITIAL_STATE, action) => { 
    switch (action.type) { 
    case PULL_EVENT_DATA: 
     return action.payload; 
    case PULL_TRENDING_DATA: 
     return action.payload; 
    case BUY_TICKET_SUCCESS: 
     return { 
     message: 'Yay, see you there!' 
     } 
    case BUY_TICKET_FAIL: 
     return { 
     message: 'shit' 
     } 
    default: 
     return state; 
    } 
} 

也許控制檯日誌可能出線? enter image description here

+0

你是確保鎖釦回報? 'Object.assign'是第一條警戒線,也許它與你的減速器有關? – Jan

+0

我已經修改了我的減速器,但它對我來說看起來很好,儘管...... @Jan –

回答

1

正如Jan指出我錯過的部分,我能夠重新定位錯誤並使其正確。

我正在犯的錯誤是可變性。在製作應用程序時,我沒有考慮可變性的概念,因此錯誤。

export default (state = INITIAL_STATE, action) => { 
    switch (action.type) { 
    case PULL_EVENT_DATA: 
     return action.payload; 
    case PULL_TRENDING_DATA: 
     return action.payload; 
    case BUY_TICKET_SUCCESS: 
     return { ...state, message: action.payload} 
    case BUY_TICKET_FAIL: 
     return { ...state, message: action.payload} 
    default: 
     return state; 
    } 
} 

您可能會發現更多的可變性here