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

时间:2019-03-17 13:46:14

标签: arrays typescript google-cloud-firestore angularfire2 angularfire

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

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

问题
如果我添加了用于设置数组的代码,该功能将无法再使用。即使两个字段都使用相同的数据调用,我也会收到以下错误消息:

  

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 个答案:

答案 0 :(得分:1)

尝试一下:

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