如何使用 Angular 在 firebase 中存储数组

How to store array in firebase using Angular

我需要使用 Angular 在 Firebase 中存储数组。我无法做到这一点。请帮忙。 我得到的是:

我要的是这个:

-|bucketList
    |-zjSaw3efefsfsdffg
       0-| bItem: 'thailand'
         | isCompleted: false

       1-| bItem: kasar devi
         | isCompleted: false

等等

我正在这样做:

 const bucketRef = this.angularFireDb.list('/bucketList/' + uid );
 bucketRef.push(bucketListItems);

通过使用 push(),您可以生成一个新节点,其 ID 由 Firebase (-Lz6G...) 自动生成。

如果你想用你生成的id写一个节点(012在你的情况下)你将不得不使用set()方法。

在你的案例中你可能遇到的问题(因为你创建了像{bItem: this.bucketListItem, isCompleted: false} 一个一个的对象)是你不知道最后一个id是什么存在于数据库中。因此,您将不得不查询数据库以找到最后一个 id 的值并将其递增(最好通过 transaction)。

或者,如果您能够使用对象数组批量创建对象,如下所示,节点 ID 将遵循 012顺序。

您可以尝试以下方法:

  var bucketListItems = [
    { bItem: 'Item1', isCompleted: false },
    { bItem: 'Item2', isCompleted: false }
  ];

  const bucketRef = this.angularFireDb.list('/bucketList/');

  bucketRef.set(uid, bucketListItems);

我尝试了一些东西并想通了一些东西。发布它以便它可以帮助任何寻找相同东西的人。

在我的组件中,我首先将对象推送到数组中,然后将该数组发送到服务

      this.bucketListArray.push({bItem: this.bucketListItem, isCompleted: false});
      this.authService.saveUserBucketListInDb(this.bucketListArray);

在我的服务中,我正在做的是:

saveUserBucketListInDb(bucketListItems: Array<object> ) {

this.angularFireDb.object('/bucketList/' + uid).set({
  bucketListItems
});

}

这最终给了我想要的东西,即:

谢谢。