Firebase ref.once() 被神秘地跳过
Firebase ref.once() is mysteriously skipped
我有一个使用 Firebase 的警报应用程序,当用户第一次使用它时,3 个示例任务会添加到列表并保存到 Firebase。为了防止再次添加这些示例任务,我的代码应该检查快照(Firebase 中的数据表示)并跳过 $scope.data.$add 部分。但是,每次刷新页面时,它都会继续添加额外的 3 个样本。
跟踪Chrome开发工具中的代码执行,刷新页面时跳过ref.once()块,因此未定义快照,这解释了示例任务的原因一次又一次地添加。
请告知我遗漏了什么。谢谢!
ref.once('value', function(snapshot) {
$scope.total = snapshot.numChildren();
});
if ($scope.total == 0) {
$scope.list = [
{content: "9am", event: "Sam", bgColor: "#b58900"},
{content: "9:30am", event: "Holley", bgColor: "#cb4b16"},
{content: "10:30am", event: "Nick", bgColor: "#d33682"}
];
$scope.list.forEach(function(item){
$scope.data.$add({'content':item.content, 'event':item.event, 'bgColor':item.bgColor});
});
}
将 if ($scope.total == 0) { ... } 块移动到 ref.once('value', function(snapshot) { .. } 中,并且有效. 问题是我的代码没有等待 firebase 的回调。希望这对某人有帮助。
我有一个使用 Firebase 的警报应用程序,当用户第一次使用它时,3 个示例任务会添加到列表并保存到 Firebase。为了防止再次添加这些示例任务,我的代码应该检查快照(Firebase 中的数据表示)并跳过 $scope.data.$add 部分。但是,每次刷新页面时,它都会继续添加额外的 3 个样本。
跟踪Chrome开发工具中的代码执行,刷新页面时跳过ref.once()块,因此未定义快照,这解释了示例任务的原因一次又一次地添加。
请告知我遗漏了什么。谢谢!
ref.once('value', function(snapshot) {
$scope.total = snapshot.numChildren();
});
if ($scope.total == 0) {
$scope.list = [
{content: "9am", event: "Sam", bgColor: "#b58900"},
{content: "9:30am", event: "Holley", bgColor: "#cb4b16"},
{content: "10:30am", event: "Nick", bgColor: "#d33682"}
];
$scope.list.forEach(function(item){
$scope.data.$add({'content':item.content, 'event':item.event, 'bgColor':item.bgColor});
});
}
将 if ($scope.total == 0) { ... } 块移动到 ref.once('value', function(snapshot) { .. } 中,并且有效. 问题是我的代码没有等待 firebase 的回调。希望这对某人有帮助。