如何根据Firebase中的$ id项进行阅读和更新?

时间:2017-02-27 22:24:48

标签: angularjs firebase firebase-realtime-database angularfire

我无法弄清楚如何使用基于id的Firebase进行阅读和更新。在这种情况下,我有一个待办事项列表,我想根据其$ id找到第一个项目,然后将comple更改为true。

todos
  -Ke0JWl9xy5sZvT55hfE
       Complete:  false
       Created_at: 1488228401479
       Description: "123"
       Priority: "high"
  -Ke0Ms_LnsO-TSwQZLcZaddclose
  -Ke0MuWCLkX29XWYyPBM
  -Ke0MwKOrjpDm9rj6L28
  -Ke0NCmpM3_dTPtY9jVb

JS

(function() {
  function Todo($firebaseArray) {
    var ref = firebase.database().ref().child("todos");
    var todos = $firebaseArray(ref);

    Todo.todos = todos;
    Todo.updateToDo = function(todo){
      console.log(todos)

      console.log(todos[todo['$id']])
    };
    return Todo;
  }

  angular
    .module('blocitoff')
    .factory('Todo', ['$firebaseArray', Todo]);
})();

1 个答案:

答案 0 :(得分:0)

我采取了一种更简单的方法:

(function() {
  function Todo($firebaseArray) {
    var ref = firebase.database().ref().child("todos");
    var todos = $firebaseArray(ref);

    Todo.todos = todos;
    Todo.updateToDo = function(todo){
      ref.child(todo['$id']).update({ completed: true });
    };
    return Todo;
  }

  angular
    .module('blocitoff')
    .factory('Todo', ['$firebaseArray', Todo]);
})();

此处update()调用使用Firebase JavaScript SDK。但是,由于AngularFire是建立在它之上的,因此无论如何它们都能完美地互操作。