Firebase使用Angularjs删除和检索数据

时间:2015-07-15 21:29:04

标签: firebase

我是firebase的新手,想知道如何在Angular视图(界面)中实现删除数据,但仍然将其保存在Firebase数据库中。目前,由于三向绑定(使用Firebase.remove()函数),当在Angular视图中删除数据时,数据将在数据库中删除。请参阅Plunker: http://plnkr.co/edit/BBtD2YoUBHBAyhu0puXd?p=info

以下是删除用户部分:

{{1}}

或者我可以根据自定义查询从Firebase检索数据吗?那么我可以将删除的数据与Firebase数据库中的现有数据区分开来吗?

2 个答案:

答案 0 :(得分:2)

  

因为我希望将数据库中的所有数据都删除

这通常被称为"软删除"它本质上意味着您只需标记数据"删除。

说你有这个数据:

messages
    -J4378sdfisdf
        name: "Lisa"
        message: "I am new to firebase, and wondering..."
    -J4378sdfjteg
        name: "Chrillewoodz"
        message: "Try doing this instead..."
    -J4378sdfkufh
        name: "Frank van Puffelen"
        message: "This is typically referred to as a..."

而不是仅从视图中删除邮件,而是将其标记为"已删除" /隐藏。在下面的示例中,我为此目的添加了visible字段:

messages
    -J4378sdfisdf
        name: "Lisa"
        message: "I am new to firebase, and wondering..."
        visible: true
    -J4378sdfjteg
        name: "Chrillewoodz"
        message: "Try doing this instead..."
        visible: true
    -J4378sdfkufh
        name: "Frank van Puffelen"
        message: "This is typically referred to as a..."
        visible: false

然后,您可以使用Firebase查询仅获取尚未隐藏的邮件:

var ref = new Firebase('https://yours.firebaseio.com');
var query = ref.child('messages').orderByChild('visible').equalTo(true);
$scope.messages = $firebaseArray(query);

答案 1 :(得分:0)

尝试这样做:

<button ng-click="removeRecord(user)">Delete</button>

$scope.removeRecord = function(user) {

  user.remove();

  $scope.alerts.splice(0, 1);
  $scope.alerts.push({
    type: 'success',
    msg: "User removed successfully!"
  });
};

这样您就不会在Firebase中访问该用户,而是在视图中访问。

您应该将user对象传递给函数而不是其ID。您这样做的方式是访问Firebase中的用户,而不仅仅是在视图中。