【问题标题】:FireBase: How to modify the object in database?FireBase:如何修改数据库中的对象?
【发布时间】:2023-03-05 12:32:01
【问题描述】:

我正在使用 AngularFire。以下是数据库的结构:

supermarket = {
    name : "Food Market",
    products : [
       {name : "Chocolates"}
       {name : "Fruits"}
    ]

 }

我想在 products 数组中推送一个蔬菜对象。我如何在 Firebase 中做到这一点?

【问题讨论】:

标签: angularjs firebase angularfire


【解决方案1】:

在 Angular Firebase 文档中针对数组进行了说明 - 由于数组与服务器数据同步并由客户端同时修改,因此可能会丢失对流体数组索引的跟踪并通过操作错误的记录来破坏数据。因此,列表中项目的位置绝不应直接使用 push() 或 splice() 等数组方法进行修改。

因此您不能使用 push() 或 splice()。 Firebase 提供了使用 $add(item) 方法将项目添加到数组的自己的方式。 它在内部确保在此并发环境中处理同步。

在你的情况下 - 如果您与 firebase 服务器同步的模型是

    supermarket = {
      name : "Food Market",
      products : [
           {name : "Chocolates"}
           {name : "Fruits"}
      ]
    }

您可以使用 firebase ref 访问此产品数组数组。

    //create a synchronized array
    $scope.products = $firebaseArray(ref);

    //adding new item to the array
    $scope.products.$add({
     {name : "vegetables"} 
   });

【讨论】:

  • 但这会添加到超市对象而不是将其推入产品数组中
  • 它是如何被引用到 products 数组的?
  • $scope.products 将引用超市对象,并且添加会将对象推送到超市对象而不是产品数组
  • 有一个奇怪的对象名称,我不知道如何创建对它的引用
猜你喜欢
  • 2018-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-10
  • 1970-01-01
  • 2016-10-16
  • 2016-05-26
相关资源
最近更新 更多