这是我的.ts文件。保存项目时,它将替换之前的项目。我希望它以递增的顺序拥有多个项目。
export class PostSermonPage {
sermon = {} as Sermon;
constructor( private afauth: AngularFireAuth,
private afDatabase:AngularFireDatabase,
public navCtrl: NavController,
public navParams: NavParams) {}
createsermon(){
this.afauth.authState.take(1).subscribe(auth => {
this.afDatabase.object(`sermon/${auth.uid}`).set(this.sermon)
.then(()=>this.navCtrl.push('SermonPage'));
});
}
}
如何在firebase中的表格中保存更多项目?
答案 0 :(得分:1)
当您在数据库中的某个位置调用set
时,它会替换该位置的任何现有值。
如果要在同一位置添加新值,请使用push
在该位置下生成新的唯一子级。所以:
this.afDatabase.list(`sermon/${auth.uid}`).push(this.sermon)
.then(()=>this.navCtrl.push('SermonPage'));
这将生成sermon/${auth.uid}
下的唯一位置,其内容为this.sermon
。
答案 1 :(得分:0)
我找到了解决方案。首先
this.afDatabase.object(`sermon/${auth.uid}`).set(this.sermon)
不应该是object
然后set
而是list
然后是push
,这样:
this.afDatabase.list(`sermon`).push(this.sermon)
然后(sermon/${auth.uid}
)将在布道下创建一个唯一的ID,所有其他具有唯一ID的对象将保存在第一个唯一ID下。
要使用其唯一ID保存在讲道表下的所有对象,我使用了以下代码。
createsermon(){
this.afauth.authState.take(1).subscribe(auth => {
this.afDatabase.list(`sermon`).push(this.sermon)
.then(()=>this.navCtrl.push('SermonPage'));
});
}