2017-07-26 49 views
0

不知道如何使用redux检查数据是否存在,任何人都可以快速回答?React Redux Firebase检查在调度前是否存在值

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

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

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

回答

0
const guestRef = database.ref('/guest'); 

guestRef.once('value', snapshot => { 
    const guest = snapshot.val(); 

    if(!guest || !guest.name) { 
     guestRef.set({ name }); 
    } 
}); 

OR

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 
} 
0

如果你想在任何时候中止特定的功能,您可以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并覆盖您的数据。