2016-04-12 2 views
3

Я использую firebase и angularfire. Есть так много способов сделать CRUD с Firebase Апи на самом деле, я до сих пор не понимаю, что конкретно разница для использования

  • $ добавить с $ firebaseArray
  • метод
  • .С() .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 
    }); 
}; 

спасибо.

ответ

10

Если у меня есть следующее дерево данных в Firebase:

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

Когда я делаю $ надстройку, я создать новый элемент в дереве

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

С $ добавь использует Тяни метод в Firebase, новый случайный ключ будет использоваться при нажатии данных на ребенка.

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

Если я набор на объект одни и те же пользователи, я перезаписать данные, которые уже есть. Таким образом, в вашем примере без указания ключа вы будете перезаписывать весь пользовательский объект.

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

Это приведет с этими данными

{ 
    users: 
    { 
     name: "name" 
    } 
} 

Это происходит потому, что любые нулевые значения, передаваемые в метод Set будет удалять любые данные, которые были первоначально там.

Передача значения null для установки() удаляет данные в указанном месте. https://www.firebase.com/docs/web/api/firebase/set.html

Смежные вопросы