При использовании приставки свойство payload не определено при вызове метода get - PullRequest
1 голос
/ 14 июня 2019

Я не могу получить доступ к своей собственности, определенной как получатель.

Я console.logged все сегменты, передающие это свойство, поэтому я думаю, что определение получателя неверно.

export const messageThreadChecker = (_uid) => (dispatch, getState) => {
    chatRef.child(_uid).on('value', snap => {
        !snap.exists() && dispatch(finishThreadCheck(false));
        dispatch(finishThreadCheck(!snap.val().isActivated ? {
            status: 'pending'
        } : {
            status: 'active',
            get payload() {
                chatRef.child(snap.val()._tid + '/messages/').orderByKey().limitToLast(1).once('value', (_message) => {
                    var _lastRef = _.values(_message.val())[0]._id;
                    userRef.child(snap.val().provider.id)
                        .once('value').then((snapshot) => {
                            return {
                                correspondent: {
                                    name: snapshot.val().name,
                                    avatar: snapshot.val().avatar
                                },
                                threadId: snapshot.val()._tid,
                                lastRef: _lastRef,
                            }
                        })
                })
            }
        }))
    })
};

При попытке получить доступ к свойству полезной нагрузки я получаю следующее:

{status:'active',payload:undefined}

1 Ответ

1 голос
/ 14 июня 2019

Если получатель не возвращает ничего, значение его свойства не определено.

Ваша функция получения полезной нагрузки ничего не возвращает, потому что у нее нет оператора возврата. Может ты этого хотел?

export const messageThreadChecker = (_uid) => (dispatch, getState) => {
    chatRef.child(_uid).on('value', snap => {
        !snap.exists() && dispatch(finishThreadCheck(false));
        dispatch(finishThreadCheck(!snap.val().isActivated ? {
            status: 'pending'
        } : {
            status: 'active',
            get payload() {
                return chatRef.child(snap.val()._tid + '/messages/').orderByKey().limitToLast(1).once('value', (_message) => {
                    var _lastRef = _.values(_message.val())[0]._id;
                    userRef.child(snap.val().provider.id)
                        .once('value').then((snapshot) => {
                            return {
                                correspondent: {
                                    name: snapshot.val().name,
                                    avatar: snapshot.val().avatar
                                },
                                threadId: snapshot.val()._tid,
                                lastRef: _lastRef,
                            }
                        })
                })
            }
        }))
    })
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...