Firebase 使用 Angularjs 删除和检索数据
Firebase delete and retrieve data with Angularjs
我是 firebase 的新手,想知道如何实现删除 Angular 视图(界面)中的数据,但仍将其保留在 Firebase 数据库中。目前,由于三路绑定(使用Firebase.remove()函数),在Angular视图中删除数据时,数据库中的数据也会被删除。在 Plunker 中查看:
http://plnkr.co/edit/BBtD2YoUBHBAyhu0puXd?p=info
这是删除用户的部分:
// 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!"
});
};
这样您就不会在 Firebase 中访问用户,而是在视图中。
您应该将 user
对象而不是其 ID 传递给函数。您这样做的方式是在 Firebase 中而不是在视图中访问用户。
because i want to have all the data in database even it is get deleted
这通常称为 "soft delete",它实际上意味着您只需 将数据标记 为“已删除”。
假设你有这个数据:
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..."
您不是只从视图中删除消息,而是将它们标记为 "deleted"/隐藏。在下面的示例中,我为此目的添加了一个 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);
我是 firebase 的新手,想知道如何实现删除 Angular 视图(界面)中的数据,但仍将其保留在 Firebase 数据库中。目前,由于三路绑定(使用Firebase.remove()函数),在Angular视图中删除数据时,数据库中的数据也会被删除。在 Plunker 中查看: http://plnkr.co/edit/BBtD2YoUBHBAyhu0puXd?p=info
这是删除用户的部分:
// 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!"
});
};
这样您就不会在 Firebase 中访问用户,而是在视图中。
您应该将 user
对象而不是其 ID 传递给函数。您这样做的方式是在 Firebase 中而不是在视图中访问用户。
because i want to have all the data in database even it is get deleted
这通常称为 "soft delete",它实际上意味着您只需 将数据标记 为“已删除”。
假设你有这个数据:
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..."
您不是只从视图中删除消息,而是将它们标记为 "deleted"/隐藏。在下面的示例中,我为此目的添加了一个 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);