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