【问题标题】:Firebase .once(): Use success and failure callbacksFirebase .once():使用成功和失败回调
【发布时间】:2017-01-21 01:52:04
【问题描述】:

我的 Angular 应用程序中有以下功能

$scope.retrieveProjectData = function() {
        $scope.projectNumberNoChange = false;

        // Only retrieve Data if the ProjectNumber changed
        if (currentlySelectedProjectNumber != $scope.feedback.projectNumber.content) {
            currentlySelectedProjectNumber = $scope.feedback.projectNumber.content;

            // Go to database-reference based on the projectNumber
            var projectsRef = firebaseDatabaseRef.child("projects");
            var currentChild = projectsRef.child(currentlySelectedProjectNumber);

            // retrieve data once and fill $scope.feedback
            currentChild.once("value",
                // If the project is found
                function (dataSnapshot) {
                    // Fill selectedProject and hand over to writeDataFromSelectedProject()
                    var selectedProject = dataSnapshot.val();

                    // Fill $scope.feedback
                    writeDataFromSelectedProject(selectedProject);
                },

                // If no data is found
                function () {
                    console.log("No data found");
                });
        }
        // If the projectNumber didn't change, the projectNumberNoChangeMessage will be shown
        else {
            $scope.projectNumberNoChange = true;
        }
    };

用户可以加载一些关于他的项目编号的数据(例如:姓名、电子邮件、电话),以便用户更快地填写表格。

在部分:

currentChild.once("value",
                // If the project is found
                function (dataSnapshot) {
                    // Fill selectedProject and hand over to writeDataFromSelectedProject()
                    var selectedProject = dataSnapshot.val();

                    // Fill $scope.feedback
                    writeDataFromSelectedProject(selectedProject);
                },

                // If no data is found
                function () {
                    console.log("No data found");
                });

即使没有找到 projectNumber,也只会调用第一个回调函数。如何使用in the docs 中描述的“failureCallbackOrContext”?

感谢您抽出宝贵时间!

【问题讨论】:

  • 根据文档,我认为错误回调是在发生错误时调用,如果您的客户端没有读取数据的权限,则更准确。此回调将传递一个错误对象,指示失败发生的原因。否则,如果您可以阅读但您的查询没有返回任何对象,则不会被视为失败。

标签: angularjs firebase firebase-realtime-database


【解决方案1】:

问题解决了。我刚刚检查了 dataSnapshot.val() 是否存在对象或 null!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 2011-04-30
    • 2021-01-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多