繁体   English   中英

如何使用 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 的值并增加它(最好通过事务)。

或者,如果您能够使用对象数组批量创建对象,如下所示,节点 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
});

}

最终给了我想要的东西,即: 数组存储在数据库中

谢谢你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM