请求的行为: 我想创建一个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],
});
}
试试这个:
groupLeader: {
groupLeaderID: author.uid,
groupLeaderName: author.displayName,
groupLeaderImage: author.profilePhoto
},
groupExecutiveBoard: [{
boardMemberId: author.uid,
boardMemberName: author.displayName,
boardMemberImage: author.profilePhoto
}],