如何在firebase中的一个表下保存多个项目

时间:2018-06-06 12:00:10

标签: cordova firebase firebase-realtime-database ionic3

这是我的.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中的表格中保存更多项目?

2 个答案:

答案 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'));
      });
    }