Передача данных между экранами с AsyncStorage - PullRequest
0 голосов
/ 23 февраля 2019

Я занимаюсь разработкой приложения для обмена сообщениями и пытаюсь найти друзей по электронной почте.Поэтому, когда пользователь вводит электронную почту другого пользователя в текстовое поле «Подсказка», напечатанная электронная почта сравнивается с электронной почтой на сервере, и если совпадение найдено, то он создает новый чат с новым другом на сервере, а также в приложении.

У меня есть один экран, который называется Messages.js, и второй экран, который называется firebaseChatModule.js, который отвечает за все процессы Backend.Что мне нужно сделать: если совпадение найдено, тогда отправьте набранное электронное письмо в Backend.Я пытался сделать это с AsyncStorage, но проблема в том, что каждый раз, когда я получаю ноль вместо электронной почты.

Как это исправить, и есть ли другие простые способы, как я мог это сделать?

Снимки экрана: Messages.js: Messages.js

firebaseChatModule.js: firebaseChatModule.js

upd:

Хорошо, теперь это работает, спасибо Nirmalsinh за ответ, но теперь я получаю следующую проблему на сервере:

enter image description here

User1 - это электронная почта, которую янабрал, но есть некоторые странные символы, такие как, например, двойной "" и /

Как я могу это исправить?

1 Ответ

0 голосов
/ 23 февраля 2019

Вам необходимо использовать setItem, как показано ниже:

         try {
                AsyncStorage.setItem('email', YOUR_VALUE)
            } catch (error) {
            }

Для восстановления:

         AsyncStorage.getItem('email').then((email) => {
                            console.log(email)
                         // YOU CAN KEEP YOUR WHOLE CODE FOR getChatId
                        }).done();
         } catch (error) {
         }

Ваш обновленный код:

///firebaseChatModule.js

getChatId = () => {

try{
  AsyncStorage.getItem('email').then((email) => {
                            console.log(email)
                                const IDloc = firebase.database().ref('/rooms');
    const newChat = IDloc.push({
      title: 'New chat over again'
    });
    const ChatID = newChat.key;
    const membersList = firebase.database().ref('/members').child(ChatID);
    const user1 = email
    console.log('user1: ', user1);
    const user = firebase.auth().currentUser;
    membersList.set({
      user1: user1,
      user2: user.email
    });
                        }).done();
         } catch (error) {
         }
  }

//Messages.js

findUserEmail = (email) => {
  firebase.database()
  .ref(`/users`)
  .orderByChild("email")
  .equalTo(email)
  .once("value")
  .then(snapshot => {
    var user = firebase.auth().currentUser;
     if (email === user.email) {
       Alert.alert("Email is the same as yours!")
     } else {
       if (snapshot.val()) {
         const value = snapshot.val()
         this.setState({ email1: email })
         const email2 = this.state.email1
         AsyncStorage.setItem('email', JSON.stringify(this.state.email1));
         console.log('email1: ', this.state.email1);
         console.log('email2: ', email2);
         FirebaseChatModule.getChatId()
         this.setState({ users: Object.keys(value).map((id) => ({
           id,
           ...value[id]
         })), promptVisible: false})
       } else {
         Alert.alert("Email doesn't exist")
       }
     }
  })
}
...