Angular 9 + Firebase. Обновить свойство в базе данных - PullRequest
0 голосов
/ 23 апреля 2020

Я работаю над формой для редактирования номера телефона и города пользователя. У меня есть вход для phoneNumber и выпадающий список с городами.

код в моем change-contacts.component.ts:

import { ActiveUserService } from 'src/app/services/active-user.service';
import { Component, ChangeDetectionStrategy, OnInit } from '@angular/core';
import { FormGroup, FormControl, Validators } from '@angular/forms';
import { UsersDbService } from 'src/shared/firebase/usersDb.service';
import { UserpanelUsersService } from 'src/pages/userpanel/userpanel-user.service';
import { LocalDataAndLogicService } from 'src/pages/userpanel/services/localDataAndLogic.service';


@Component({
    selector: 'app-change-contacts',
    templateUrl: './change-contacts.component.html',
    styleUrls: ['./change-contacts.component.scss'],
    //changeDetection: ChangeDetectionStrategy.OnPush
})

export class ChangeContactsComponent implements OnInit {
  contactChangeForm: FormGroup

  constructor(
    public userpanelUsersService: UserpanelUsersService,
    public localDataAndLogicService: LocalDataAndLogicService,
    public usersDbService: UsersDbService,
    public activeUserService: ActiveUserService
  ){}

  ngOnInit() {
    this.contactChangeForm = new FormGroup({
        phoneNumber: new FormControl(null, [
            Validators.minLength(12),
            Validators.required
        ]),
        country: new FormControl(''),
        city: new FormControl('{{userpanelUsersService.user.sity}}')
    });
        console.log(this.userpanelUsersService.user.phoneNumber);
  }

  submitChange() {
      const formData = {...this.contactChangeForm.value};
    this.usersDbService.updateUsersProperty(this.userpanelUsersService.user.id, this.userpanelUsersService.user.sity, formData.city)
      this.usersDbService.updateUsersProperty(users, this.userpanelUsersService.user.phoneNumber, formData.phoneNumber)

  }
 } 

также у меня было 2 услуги: 1) usersDbService

import { AuthService } from './auth.service';
import { FireBaseService } from './firebase.service';
import { Observable } from 'rxjs';
import { Injectable } from '@angular/core';
@Injectable({
    providedIn: 'root'
})
export class UsersDbService {
  public collectionName: string = 'users';
  constructor(public db: FireBaseService, public auth: AuthService) {}
  public usersCollection (): Observable<any[]> {
    return this.db.getCollection(this.collectionName);
  }
  public usersItem(id: any): Observable<any> {
    return this.db.getItem(this.collectionName, id);
  }
  public deleteUser(id: any): void {
    this.db.deleteItem(this.collectionName, id);
  }
  public updateUser(item: any): void {
    this.db.updateItem(this.collectionName,item.id)
  }
  public addUser(item: any, id:any): void {
    this.db.addItem(this.collectionName,item,id);
  }
  public updateUsersProperty(id: any, name, value): void {
    this.db.updateItemsProperty(this.collectionName, id, name, value);
  }
  public addUserWithPasswordAndEmail(email:string,password:string): void {
    this.auth.createUserWithEmailAndPassword(email,password);
  }
  public checkUserWithPasswordAndEmail(email:string,password:string): void {
    this.auth.signUserWithEmailAndPassword(email,password);
  }
}

и 2) userpanel-user.service.ts

import { Injectable } from '@angular/core';
import { IUser } from 'src/models/Users.model';

@Injectable({
  providedIn: 'root'
})
export class UserpanelUsersService {
  public images: string[] = [];
  user: IUser | any = {
    id: '',
    firstName: '',
    lastName: '',
    fullName: '',
    phoneNumber: 1212122,
    email: '',
    gender: '',
    sity: '',
    country: '',
    rating: [],
    allowedWantsCardsNumber: 0,
    comments: [],
    images: this.images,
    successfulExchanges: 0
  };

  clear(): void {
    this.user = {
      id: '',
      firstName: '',
      lastName: '',
      fullName: '',
      phoneNumber: 1212122,
      email: '',
      gender: '',
      sity: '',
      country: '',
      rating: [],
      allowedWantsCardsNumber: 0,
      comments: [],
      images: [],
      successfulExchanges: 0
    };
  }
}

Когда я использую этот код из моего component.ts, есть В моей коллекции пользователей нет обновленных свойств, но создайте новое свойство с именем oldCityName: newCityName, но мне нужно sity: newCityName. Возможно, я использую неправильное свойство имени в updateUsersProperty.

Что мне делать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...