我是firebase的新手,想知道如何在Angular视图(界面)中实现删除数据,但仍然将其保存在Firebase数据库中。目前,由于三向绑定(使用Firebase.remove()函数),当在Angular视图中删除数据时,数据将在数据库中删除。请参阅Plunker: http://plnkr.co/edit/BBtD2YoUBHBAyhu0puXd?p=info
以下是删除用户部分:
{{1}}
或者我可以根据自定义查询从Firebase检索数据吗?那么我可以将删除的数据与Firebase数据库中的现有数据区分开来吗?
答案 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中的用户,而不仅仅是在视图中。