Сохранение данных на Angular с Firestore после перезагрузки страницы - PullRequest
0 голосов
/ 28 мая 2020

Как я могу сохранить или вспомнить на моем сервере firestore данные после перезагрузки страницы по любой причине? В основном в одном из компонентов я делаю запрос на некоторые данные, которые по умолчанию инициализируются в моем компоненте службы входа в систему, скажем:

USER Component
export class UserComponent implements OnInit {
  resumeAccount: UserResumeAccount = {
    amountInAccount: 0,
    allDetails: null,
  };

   constructor(
    private userLogged: LoginService) {}

  ngOnInit(): void {
    this.resumeAccount.allDetails = this.userLogged.resumeAccount.allDetails;
    this.resumeAccount.amountInAccount = this.userLogged.resumeAccount.amountInAccount;
  }

}

, затем в службе я развертываю logi c о показе или нет эта информация, зарегистрированная пользователем, когда-то регистрируется при доступе к данным firebase / firestoree. Как только пользователь входит в данные, данные отображаются правильно, но если по какой-либо причине страница перезагружается, все данные теряются, несмотря на то, что пользователь активен в соответствии с методом getUserState ( ):

LoginService component

@Injectable()
export class LoginService {
  //variables

  userdata: UserDataModel = {
    uid: '',
    restData: '',
  };
  userResumeAccount: UserResumeAccount = {
    amountInAccount: 0,
    allDetails: null,
  };

  totalAmount: number = 0;

  resumeAccount: UserResumeAccount = {
    amountInAccount: 0,
    allDetails: null,
  };

  //constructor
  constructor(
    private userLogin: AngularFireAuth,
    private docCreator: AngularFirestore,
    private router: Router
  ) {}

   ngOnInit():void {
    this.userLogin.setPersistence(auth.Auth.Persistence.SESSION);

   }

  //methods


   async logInUser(SignUpData: LoginData) {
    let { emailUser, passwordUser } = SignUpData;

    await this.userLogin.setPersistence(auth.Auth.Persistence.SESSION);

    let responseOk = await this.userLogin.signInWithEmailAndPassword(emailUser,passwordUser);

    this.userdata.uid = await responseOk.user.uid;
    this.userdata.restData = await responseOk.user;

    let pathUserName = await this.docCreator==>path to the document inside the firestore
      .collection('users')
      .doc(this.userdata.uid);

    await pathUserName========>getting the firestore data and asigning it to variables
      .get()
      .toPromise()
      .then(async (result) => {
        if (result.exists) {
          this.resumeAccount.allDetails = await result.get('userName');
          this.resumeAccount.amountInAccount = await this.totalAmount;
        } else return console.log('not Document Found');
      })
      .then(() => {})
      .catch((err) => {
        console.log('Error getting document:', err);
      });
  }

  getUserState() {
    return this.userLogin.authState.pipe(map((userLoged) =>{return (console.log(userLoged),
         userLoged)}));
  }===>ON RELOAD THIS METHOD STILL SHOWS USER ACTIVE 
}

Таким образом, в основном в этом предыдущем разделе внутри метода, который запускает процесс входа в систему, я получаю доступ к данным, хранящимся в firestore; также в методах ngOnInit я устанавливаю sh метод сохранения для раздела, претендующего на сохранение данных, достигнутых после перезагрузки страницы, но это неправильно!, а также его инициализацию в начале метода loginUser. Как я могу решить эту проблему. Заранее спасибо

...