Angular Firebase - Как добавить свойство документа в firestore? - PullRequest
0 голосов
/ 08 января 2019

У меня проблема с угловым решением.

Я пытаюсь добавить свойство к уже существующему в firestore документе.

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

export interface User {
    email: string;
    uid: string;
    photoURL?: string;
    displayName?: string;
    teams?: string[];
}

Я хочу создать команду и добавить этот идентификатор команды в массив teams в существующем объекте User.

Я не хочу получать все пользовательские данные, а просто добавить новое значение в это поле.

Это возможно? Может быть, у вас есть предложения, как сделать это более эффективным?

Интерфейс команды выглядит так

export interface Team {
    name: string;
    description?: string;
    admin?: string; // = creator - first user
    members?: string[]; // array of users UIDs.
    boards?: string[]; // array of board docs id.
} 

Компонент, отвечающий за добавление команды, - это просто форма, поэтому onSubmit () я пытался сделать следующее, но не знаю, как добавить идентификатор документа команды в объект пользователя.

onSubmit(form: NgForm) {
    const newTeam: Team = {
        name: form.value.name,
        description: form.value.description,
        admin: this.auth.currentUserId,
        members: [this.auth.currentUserId],
    };
    const userRef: AngularFirestoreDocument<any> = this.afs.doc(
        `users/${this.auth.currentUserId}`
    );
    let teamRefId = '';
    this.afs.collection('teams').add(newTeam).then((docRef) => teamRefId = docRef.id);
    this.router.navigateByUrl('/dash');
}

Есть идеи? Возможно, это должен быть какой-то оператор распространения, но опять же я не хочу получать пользовательский объект и публиковать его обратно в firestore, а просто обновить это одно поле ...

1 Ответ

0 голосов
/ 08 января 2019

Вы можете сделать это, обновив документ следующим:

let teamArray = []; // if not excisting.
teamArray.push(teamRefId); // or just add it if it's.
userRef.update({teams: teamArray});

Обновление не изменит ничего, кроме команды. Если команда не будет исключена, команда будет добавлена.

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