Firebase使用Angularjs删除和检索数据
我是firebase的新手,想知道如何在Angular view(接口)中删除数据,但仍将其保留在firebase数据库中。目前,由于三向绑定(使用Firebase.remove()函数),在角度视图中删除数据时,将删除数据库中的数据。请参见此处的Plunker: 以下是删除用户部分:Firebase使用Angularjs删除和检索数据,firebase,Firebase,我是firebase的新手,想知道如何在Angular view(接口)中删除数据,但仍将其保留在firebase数据库中。目前,由于三向绑定(使用Firebase.remove()函数),在角度视图中删除数据时,将删除数据库中的数据。请参见此处的Plunker: 以下是删除用户部分: // Remove user $scope.removeRecord = function(userId) { var userUrl = fbURL + user_table + '/' + user
// Remove user
$scope.removeRecord = function(userId) {
var userUrl = fbURL + user_table + '/' + userId;
$scope.user = $firebase(new Firebase(userUrl));
$scope.user.$remove()
$scope.alerts.splice(0, 1);
$scope.alerts.push({
type: 'success',
msg: "User removed successfully!"
});
};
或者,我可以根据自定义查询从Firebase检索数据吗?因此,也许我可以将已删除的数据与Firebase数据库中的现有数据区分开来?请尝试这样做:
<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!"
});
};
删除
$scope.removeRecord=函数(用户){
user.remove();
$scope.alerts.splice(0,1);
$scope.alerts.push({
键入:“成功”,
msg:“用户已成功删除!”
});
};
这样,您就不会在Firebase中访问用户,而是在视图中访问用户
您应该将user
对象传递到函数中,而不是它的ID。您这样做是在Firebase中访问用户,而不是仅在视图中
因为我希望数据库中的所有数据都被删除 这通常被称为“软删除”,它本质上意味着您只需将数据标记为“已删除” 假设您有以下数据:
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);
如果需要帮助,你必须显示一些代码。添加了plunker信息。谢谢!不确定为什么你只想在视图中删除它?因为我想让数据库中的所有数据都被删除,这样我以后就可以分析用户行为……你可以创建数据的副本,而不必将其绑定到firebase,然后再对其进行操作?谢谢!但是,一旦我刷新页面,这将不起作用。数据仍在firebase中,然后将再次显示在视图中…因此我想知道是否可以从firebase执行自定义查询…这有意义吗?这没有任何意义。你说你想在firebase中保留记录,但只在视图中删除它们。当然,它们会出现刷新时确认,因此我不太明白您在这里尝试执行的操作。--| | |…1.是的,我想将记录保存在firebase中。2.我不想将删除的数据返回给其他用户。因此,我想我可以使用一个字段来标记数据是否被删除,然后进行自定义查询…但因为我以前没有这样做,所以我想知道我是否这是正确的方法…还是没有意义?@Lisa那么我不知道你将如何实现这一点,抱歉:soops!出于某种原因,我直到今天才在这里看到你的答案。非常感谢,这正是我想要做的。不过我使用了稍微不同的功能。只是想出了另一种方法。我可以简单地使用filter in angular可以过滤我得到的所有数据。ng repeat=“note in notes | filter:{visible:true}”是的。但请记住,这是一个客户端过滤器。因此,您首先将所有删除的数据下载到每个客户端,然后不显示它。根据删除数据的数量,这可能被视为浪费或错误(取决于移动设备上的用户数量)不考虑您的用户移动数据计划。有意义…目前我使用$firebasearray获取数据,但不知道如何使用orderBy筛选数据。您有什么建议吗?谢谢!嗯…我上面的上一个示例不是这样做的:使用
orderBy()
和equalTo()
来过滤$firebaseArray()中的内容?