@sinevik

Как мне вернуть правильный result?

import { ADD_USER} from './actionTypes';
import { HELLO} from './actionTypes';
import firebase from 'react-native-firebase';

export const addUser = (surname, name, patronymic, phone) => {
    return dispatch => {
      var db = firebase.firestore();
      let user = {
        surname: surname,
        name: name,
        patronymic: patronymic,
        phone: phone
      }
      var result = 'начальный';
      var docRef = db.collection('users').doc(user.phone);
      docRef.get().then(function(doc) {
      if (doc.exists) {
          result = 'Такой номер уже есть';
          console.log('Такой номер уже есть');
      }else{
          db.collection('users').doc(user.phone).set(user);
          result = true;
          console.log(true);
      }
      }).catch(function(error) {
          result = 'Произошла ошибка';
          console.log('Произошла ошибка');
      });
      return result;
    };
};


При вызове данной функции из store redux
let result = this.props.onAddUser(
this.state.controls.surname.value,
this.state.controls.name.value,
this.state.controls.patronymic.value,
this.state.controls.phone.value
)
console.log(result);

result всегда равен значению 'начальный'. Хотя в консоле показывает ('Такой номер уже есть'). Как мне правильно перезаписать result?
  • Вопрос задан
  • 110 просмотров
Решения вопроса 2
@SeaBreeze876
Front-end разработчик
import {ADD_USER} from './actionTypes';
import {HELLO} from './actionTypes';
import firebase from 'react-native-firebase';

export const addUser = (surname, name, patronymic, phone) => {
    return async dispatch => {
        let db = firebase.firestore();
        let user = {
            surname: surname,
            name: name,
            patronymic: patronymic,
            phone: phone,
        };
        let result = 'начальный';
        let docRef = db.collection('users').doc(user.phone);
        try {
            let doc = await docRef.get()
            if (doc.exists) {
                result = 'Такой номер уже есть';
                console.log('Такой номер уже есть');
            } else {
                db.collection('users').doc(user.phone).set(user);
                result = true;
                console.log(true);
            }
        } catch (e) {
            result = 'Произошла ошибка';
            console.log('Произошла ошибка');
        }
        return result;
    };
};


let result = this.props.onAddUser(
    this.state.controls.surname.value,
    this.state.controls.name.value,
    this.state.controls.patronymic.value,
    this.state.controls.phone.value,
).then(result => console.log(result))
Ответ написан
Комментировать
alexey_bille
@alexey_bille
Web developer
Попробуйте так
docRef.get().then((doc) => {
      if (doc.exists) {
          result = 'Такой номер уже есть';
          console.log('Такой номер уже есть');
      }else{
          db.collection('users').doc(user.phone).set(user);
          result = true;
          console.log(true);
      }
      }).catch((error) => {
          result = 'Произошла ошибка';
          console.log('Произошла ошибка');
      });
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы