2016-11-05 44 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