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

Cordova 如何在firebase中的一个表下保存多个项目,cordova,firebase,firebase-realtime-database,ionic3,Cordova,Firebase,Firebase Realtime Database,Ionic3,这是我的.ts文件。保存项目时,它将替换上一个项目。我希望它有多个项目在一个不断增加的顺序 export class PostSermonPage { sermon = {} as Sermon; constructor( private afauth: AngularFireAuth, private afDatabase:AngularFireDatabase, public navCtrl: NavCo

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

在数据库中的某个位置上调用
set
时,它将替换该位置上的任何现有值

如果要在同一位置下添加新值,请使用
push
在该位置下生成新的唯一子项。因此:

this.afDatabase.list(`sermon/${auth.uid}`).push(this.sermon)
.then(()=>this.navCtrl.push('SermonPage'));

这将在
salmon/${auth.uid}
下生成一个唯一的位置,其内容为
This.salmon

我找到了解决方案。首先

 this.afDatabase.object(`sermon/${auth.uid}`).set(this.sermon)
不应该是
对象
然后
设置
,而是
列表
然后
推送
如下:

   this.afDatabase.list(`sermon`).push(this.sermon)
然后(
sermon/${auth.uid}
)将在sermon下创建一个唯一Id,所有其他具有唯一Id的对象将保存在第一个唯一Id下

为了将所有对象保存在具有唯一Id的布道表下,我使用了以下代码

    createsermon(){
        this.afauth.authState.take(1).subscribe(auth => {
        this.afDatabase.list(`sermon`).push(this.sermon)
        .then(()=>this.navCtrl.push('SermonPage'));
      });
    }

当你说“按递增顺序”时,你是在自动递增你的帖子在数据库中保存时的唯一ID吗?是的。我的意思是,每个项目都使用唯一的id保存,并且不会被最近的内容所取代。谢谢@Frank Van Puffelen。除此之外,您的代码是正确的,而不是
。对象
我们需要使用
列表
。你的回答帮助我找到了我使用的代码
this.afDatabase.list(
sarmon
).push(this.sarmon)。然后(()=>this.navCtrl.push('sarmonpage')