AngularFire2:创建文档并设置地图数组

问题描述 投票:2回答:1

请求的行为: 我想创建一个AngularService,它使用两个字段向Firestore添加文档。第一个字段是填充用户数据的地图。第二个字段是一组地图。它应该从第一个字段接收地图作为第一个项目。

当前状态 如果我只添加地图(第一个字段)并注释掉地图数组(第二个字段),该函数会成功创建并填充文档。

问题 如果我添加用于设置数组的代码,该函数将不再起作用。即使使用相同的数据调用这两个字段,我收到以下错误:

FirebaseError:函数DocumentReference.set()使用无效数据调用。不支持的字段值:undefined(在字段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],

  });
}
arrays typescript google-cloud-firestore angularfire2 angularfire
1个回答
1
投票

试试这个:

groupLeader: {
      groupLeaderID: author.uid,
      groupLeaderName: author.displayName,
      groupLeaderImage: author.profilePhoto
    },
groupExecutiveBoard: [{
      boardMemberId: author.uid,
      boardMemberName: author.displayName,
      boardMemberImage: author.profilePhoto
}],
© www.soinside.com 2019 - 2024. All rights reserved.