firebase $add() .push() .set()

firebase $add() .push() .set()

本文关键字:set push firebase add      更新时间:2024-05-21

我使用的是firebase和angularfire。有很多方法可以使用Firebase Api进行CRUD实际上,我仍然不知道使用的具体区别是什么

  • $add与$firebaseArray
  • .push()方法
  • .set()方法

我认为它们在技术上是一样的,我更喜欢使用.set方法(),但不知道确切的原因,也不知道我为什么要使用它。有什么具体的理由不使用它吗?$firebaseArray到底做了什么?如果我们可以只声明基本的引用变量。

在这种情况下:

var usersRef = Ref.child('users');
  $scope.createUser = function() {
    $scope.userRef.child($id).set({
       name: name
           });
      };

$scope.data = $firebaseArray(Ref.child('users'));
$scope.createUser = function() {
  $scope.data.child($id).$add({
    name: name
  });
 };

谢谢。

如果我在Firebase中有以下数据树:

{
  users:
   {
      key: { name:"bob" }
   }
}

当我添加$add时,我将在树中创建一个新项目

$scope.data.child('users').$add({
    name: name
  });

由于$add在Firebase中使用Push方法,因此在将数据推送到子级时将使用新的随机密钥。

{
  users:
   {[
      key: { name:"bob" },
      key2: { name:"name" }
   ]}
}

如果我对同一个Users对象进行设置,我将覆盖已经存在的数据。因此,在您的示例中,在不指定键的情况下,您将覆盖整个用户对象。

$scope.userRef.child('users').set({
       name: name
           });
      };

这将导致此数据

{
  users:
   {
      name: "name"
   }
}

发生这种情况的原因是,传递给Set方法的任何null值都将删除原始数据。

将null传递给set()将删除指定位置的数据。https://www.firebase.com/docs/web/api/firebase/set.html