React Redux Firebase在发送之前检查值是否存在

时间:2017-07-26 16:31:57

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

不确定如何使用redux检查数据是否存在,任何人都有快速回答?

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

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

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

2 个答案:

答案 0 :(得分: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
}

答案 1 :(得分: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并覆盖数据。