我正在使用Angular和Firestore
我想做什么
遍历Firestore
集合
更改该集合中每个AngularFirestoreDocument
中字段的值
这是我领取minutes
收藏集的地方
export class MinutesComponent {
minutesArray: AngularFirestoreCollection<any>;
minutes: Observable<any[]>;
constructor(private afs: AngularFirestore) {
this.minutesArray = afs.collection<any>('minutes', ref => ref.orderBy('year', 'desc'));
this.minutes = this.minutesArray.valueChanges();
...
}
}
在我的构造函数中,这就是我尝试更新每个文档的方式
this.minutes.subscribe(minutes => {
minutes.forEach(minute => {
####RETRIEVES INDIVIDUAL DOCUMENT FROM DATABASE
const minuteRef = this.afs.doc(`minutes/${minute.id}`);
if (minute.month === 'January') {
minuteRef.update({'month': 1 });
} else if (minute.month === 'jan') {
minuteRef.update({'month': 1 });
} else {
minuteRef.update({'month': 2 });
}
});
有什么想法吗?我想遍历文档集合并更新集合中每个文档的字段值。
例如,如果
document.month = january
我想将其更改为
document.month = 1
谢谢。
答案 0 :(得分:1)
valueChanges()
不包含您的通话记录ID。如果您需要访问ID,则应使用snapshotChanges()
更改此行this.minutes = this.minutesArray.valueChanges();
到
this.minutes = this.minutesArray
.snapshotChanges()
.pipe(
map(actions => actions.map(a => {
const data = a.payload.doc.data();
const id = a.payload.doc.id;
return { id, ...data };
}))
);