【问题标题】:React Redux Firebase check if value exist before dispatchReact Redux Firebase 在调度前检查值是否存在
【发布时间】:2017-07-26 16:31:56
【问题描述】:

不知道如何使用redux检查数据是否存在,有人能快速回答吗?

export function fetchName(name) {
    return dispatch => {

        const guestsRef = database.ref('/guest').set({
            name
        })
            .then(function (snapshot) {
                dispatch(setName({
                    name
                }));
            });
    }
}

此代码只是覆盖相同的条目并清除所有数据。

【问题讨论】:

    标签: reactjs firebase firebase-realtime-database react-redux


    【解决方案1】:
    const guestRef = database.ref('/guest');
    
    guestRef.once('value', snapshot => {
        const guest = snapshot.val();
    
        if(!guest || !guest.name) {
            guestRef.set({ name });
        }
    });
    

    try {
        const guest = (await database.ref('/guest').once('value')).val();
    
        if(guest == null) {
           const updates = { name };
           await database.ref('/guest').update(updates);
           //await database.ref('/guest').set({ name });
        }
    } catch (error) {
        //error handling
    }
    

    【讨论】:

      【解决方案2】:

      如果您想中止特定功能,您可以随时return false

      export function fetchName(name) {
          return dispatch => {
      
              const guestsRef = database.ref('/guest').set({
                  name
              })
                  .then(function (snapshot) {
      
                      if ( snashot ) { return false; }
      
                      dispatch(setName({
                          name
                      }));
                  });
          }
      }
      

      这样您就可以避免调用dispatch 并覆盖您的数据。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-01-03
        • 1970-01-01
        • 1970-01-01
        • 2017-05-29
        • 2020-12-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多