Marcelo J Forclaz
Marcelo J Forclaz

Reputation: 728

Add an item to a firebase collection

I need to append an item in one or more collections in Firebase Database using angularfire (AngularJS)

For example, if I have:

users {
    Marcelo: {
        userid: 1
    },
    Javier: {
        userid: 2
    }
}

How can I append a new item in each collection, getting something like this?

users {
    Marcelo: {
        userid: 1
        state: "enabled"
    },
    Javier: {
        userid: 2
        state: "enabled"
    }
}

Upvotes: 0

Views: 460

Answers (2)

Frank van Puffelen
Frank van Puffelen

Reputation: 598817

There is no specific AngularFire operation for this. But since AngularFire is just built on top of the Firebase JavaScript SDK, you use that to read the data and loop over it and then update each item.

A short snippet to get you started:

var ref = firebase.database().ref("users");
users.once("value", function(snapshot) {
  snapshot.forEach(function(userSnapshot) {
    userSnapshot.ref.update({ state: "enabled" });
  });
});

Upvotes: 1

Maher
Maher

Reputation: 2547

In this sample we create a function to insert param in our object

//object = users object
//key = state or something else
//value = true or something else

var insertParam = function(object, key, value) {
  for (var _key in object) {
     object[_key][key] = value;
  }
}

var app = angular.module("app", []);

app.controller("ctrl", [
  "$scope",
  function($scope) {
    $scope.users = {
      Marcelo: {
        userid: 1
      },
      Javier: {
        userid: 2
      }
    }


    var insertParam = function(object, key, value) {
      for (var _key in object) {
        object[_key][key] = value;
      }
    }

    insertParam($scope.users, "state", true);
  }
]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="app" ng-controller="ctrl">
  <ul>
    <li ng-repeat="(key, option) in users">
      {{key}}
      <ul>
        <li><b>userId:</b> {{option.userid}}</li>
        <li><b>state:</b> {{option.state}}</li>
      </ul>
    </li>
  </ul>
</div>

Upvotes: 0

Related Questions