AngularFire2: создать документ и установить массив карт - PullRequest
2 голосов
/ 17 марта 2019

Запрошенное поведение:
Я хотел бы создать AngularService, который добавляет документ в Firestore с двумя полями.Первое поле - это карта, которая заполнена пользовательскими данными.Второе поле представляет собой массив карт.Она должна получить карту из первого поля в качестве первого элемента.

Текущее состояние
Функция создает и заполняет документ успешно, если я только добавлю карту (первое поле) изакомментируйте массив карт (второе поле).

Issue
Если я добавлю код для установки массива, функция больше не будет работать.Я получаю следующую ошибку, даже если оба поля вызываются с одинаковыми данными:

FirebaseError: Функция DocumentReference.set () вызвана с недопустимыми данными.Неподдерживаемое значение поля: не определено (находится в поле groupExecutiveBoard)

Как это исправить?Как я могу создать массив карт и нажать на него первую карту?

Моя модель:

export interface Group {

    groupLeader?: {
        groupLeaderID?: string;
        groupLeaderName?: string;
        groupLeaderImage?: string;
    };
    
    //array
    groupExecutiveBoard?: {
        boardMemberID?: string;
        boardMemberName?: string;
        boardMemberImage?: string;
    }[];
    
}

Мой сервис

constructor(private angularFirestore: AngularFirestore) { }

addGroup(author: User) {
  const groupsCollection = this.angularFirestore.collection<GroupID>('groups');

  groupsCollection.add({

    // sets groupleader if "GroupExecutiveBoard" is commented out
    groupLeader: {
      groupLeaderID: author.uid,
      groupLeaderName: author.displayName,
      groupLeaderImage: author.profilePhoto
    },

    //should set user data as first array item. Does not work
    groupExecutiveBoard: {
      boardMemberId: author.uid,
      boardMemberName: author.displayName,
      boardMemberImage: author.profilePhoto
    }[0],

  });
}

1 Ответ

1 голос
/ 17 марта 2019

Попробуйте это:

groupLeader: {
      groupLeaderID: author.uid,
      groupLeaderName: author.displayName,
      groupLeaderImage: author.profilePhoto
    },
groupExecutiveBoard: [{
      boardMemberId: author.uid,
      boardMemberName: author.displayName,
      boardMemberImage: author.profilePhoto
}],
...