Как исправить TypeError: Преобразование круговой структуры в JSON в JSON.stringify (<anonymous>) в реактивном - PullRequest
0 голосов
/ 30 апреля 2019

Мне нужно хранить маркер аутентификации firebase как пользователя в собственном режиме asyncstorage.вот мой код.

loginUser = async (email, pw) => {
        if (this.state.isConnected) {
            if (email != '' && pw != '') {
                try {
                    let user = fb.auth().signInWithEmailAndPassword(email, pw).catch((err) => {
                        alert('Invalid email or password');
                    });
                    this.storeUser(JSON.stringify(user))
                    console.log(user);
                } catch (error) {
                    console.log(error);
                }
            } 
        } 
    }

    storeUser = async (user) => {
        try {
            await AsyncStorage.setItem('User', JSON.stringify(user)).then(() => {
                console.log("Success user");
            })
        } catch (e) {
            console.log(e);
        }
    }

но он дает мне эту ошибку

TypeError: Converting circular structure to JSON
     at JSON.stringify (<anonymous>)

Может кто-нибудь помочь мне с этим?

Ответы [ 2 ]

1 голос
/ 30 апреля 2019

Неправильное использование вызова функции signInWithEmailAndPassword(email, pw), функция firebase.auth.signInWithEmailAndPassword () возвращает объект Promise<UserCredential>, который выдаст ошибку при вызове JSON.stringify().

Возвращенный объект UserCredential необходимо извлечь из Promise с помощью метода then() класса Promise. Смотрите ниже:

try {
    fb.auth().signInWithEmailAndPassword(email, pw).then(function(userCred) => {
             this.storeUser(userCred);
             console.log(JSON.stringify(userCred)); // so you can see a JSON string in the logs
        }).catch((err) => {
            alert('Invalid email or password');
    });
}

Отказ от ответственности: поскольку вся функция не отображается, поиграйте с вышеупомянутым

0 голосов
/ 30 апреля 2019

Из вышеприведенного кода ошибка конвертируется дважды

await AsyncStorage.setItem ('Пользователь', пользователь) .then (() => {

Updated Code : 

loginUser = async (email, pw) => {
        if (this.state.isConnected) {
            if (email != '' && pw != '') {
                try {
                    let user = fb.auth().signInWithEmailAndPassword(email, pw).catch((err) => {
                        alert('Invalid email or password');
                    });
                    this.storeUser(JSON.stringify(user))
                    console.log(user);
                } catch (error) {
                    console.log(error);
                }
            } 
        } 
    }

    storeUser = async (user) => {
        try {
            await AsyncStorage.setItem('User', user).then(() => {
                console.log("Success user");
            })
        } catch (e) {
            console.log(e);
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...