Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firebase使用Angularjs删除和检索数据_Firebase - Fatal编程技术网

Firebase使用Angularjs删除和检索数据

Firebase使用Angularjs删除和检索数据,firebase,Firebase,我是firebase的新手,想知道如何在Angular view(接口)中删除数据,但仍将其保留在firebase数据库中。目前,由于三向绑定(使用Firebase.remove()函数),在角度视图中删除数据时,将删除数据库中的数据。请参见此处的Plunker: 以下是删除用户部分: // Remove user $scope.removeRecord = function(userId) { var userUrl = fbURL + user_table + '/' + user

我是firebase的新手,想知道如何在Angular view(接口)中删除数据,但仍将其保留在firebase数据库中。目前,由于三向绑定(使用Firebase.remove()函数),在角度视图中删除数据时,将删除数据库中的数据。请参见此处的Plunker:

以下是删除用户部分:

// 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()中的内容?