AngularFire2:创建文档并设置地图数组
AngularFire2: Create document and set an array of maps
要求的行为:
我想创建一个 AngularService,它将一个文档添加到具有两个字段的 Firestore。第一个字段是一张地图,其中填充了用户数据。第二个字段是地图数组。它应该从第一个字段接收地图作为第一项。
当前状态
如果我只添加地图(第一个字段)并注释掉地图数组(第二个字段),该函数会成功创建和填充文档。
问题
如果我添加用于设置数组的代码,该函数将不再起作用。即使使用相同的数据调用两个字段,我也会收到以下错误:
FirebaseError: Function DocumentReference.set() called with invalid
data. Unsupported field value: undefined (found in field
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
}],
要求的行为:
我想创建一个 AngularService,它将一个文档添加到具有两个字段的 Firestore。第一个字段是一张地图,其中填充了用户数据。第二个字段是地图数组。它应该从第一个字段接收地图作为第一项。
当前状态
如果我只添加地图(第一个字段)并注释掉地图数组(第二个字段),该函数会成功创建和填充文档。
问题
如果我添加用于设置数组的代码,该函数将不再起作用。即使使用相同的数据调用两个字段,我也会收到以下错误:
FirebaseError: Function DocumentReference.set() called with invalid data. Unsupported field value: undefined (found in field 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
}],