热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

函数返回字符串angularjsfirebase-functiontoreturnstringangularjsfirebase

Istartedangularjs2daysago()Imcurrentlyaskingmyselfhowtocreateafunctionthatfetch

I started angularjs 2 days ago (...) I'm currently asking myself how to create a function that fetches my firebase data and depending on the child, it returns a string.

我2天前开始使用angularjs(...)我目前正在问自己如何创建一个获取我的firebase数据的函数,并根据子节点返回一个字符串。

Seems pretty simple when I say it, but harder to do...

我说的时候看起来很简单,但更难做到......

I could fetch the data one by one but the problem is that there are a total of 84 childs!!

我可以逐个获取数据,但问题是总共有84个孩子!

My Context The website retrieves from firebase if a person is working night, day or evening, for the 7 days of the week, for 4 weeks in a month (3x7x4 = 84). An example of one of my child is: Saturday1Night: true where "1" means week 1.

我的上下文如果一个人在一天中的7天工作,一天或晚上工作,一个月中的4周(3x7x4 = 84),网站将从firebase中检索。我孩子的一个例子是:Saturday1Night:true,其中“1”表示第1周。

What I tried

我尝试了什么

function getOneDay(currentUserId, key, query, text){
  firebase.database().ref().child('Users').child(currentUserId).child(key).once('value').then(function(snapshot) {
    /* query is "Saturday1Night" */
    if(datasnapshot.$value === null && datasnapshot.id === null) {
      /* not working */
      text = 'X';
    }else{
      /* value is "true", person is working */
      text = query;
    }

  })
  return text;
}

Now my real question is, how can I, like in java for example, create a function that returns a string? How can I display it in my $scope?

现在我真正的问题是,我怎么能像java一样创建一个返回字符串的函数?如何在$ scope中显示它?

html

HTML

{{s1n}}

angularjs

angularjs

$scope.s1n = text; //??
$scope.s1n = getOneDay(/*uid*/, /*key*/, "Saturday1Night", $scope.s1n) //??

Thank you in advance, have a good night/day!

提前谢谢,祝你有个美好的夜晚!

2 个解决方案

#1


0  

The Firebase Realtime Database APIs are asynchronous, meaning that once() returns immediately. Some time later, it will invoke your callback when the data becomes available. This means that your getOneDay function also returns immediately with an undefined value, because text doesn't have a value at the time it's evaluated.

Firebase实时数据库API是异步的,这意味着once()会立即返回。一段时间后,它将在数据可用时调用您的回调。这意味着您的getOneDay函数也会立即返回未定义的值,因为文本在评估时没有值。

You can't really make a function that returns a value from Realtime Database. You need to deal with its asynchronous APIs with the promises or callback they provide.

您无法真正创建一个从Realtime Database返回值的函数。您需要使用它们提供的promise或回调来处理其异步API。

Read here to learn more about why Firebase APIs are asynchronous.

阅读此处以了解有关Firebase API异步原因的更多信息。

#2


0  

You can try async-await:

你可以尝试async-await:

    async function getOneDay(currentUserId, key, query, text){

        var datasnapshot = await firebase.database().ref().child('Users').child(currentUserId).child(key).once('value');

        if(datasnapshot.$value === null && datasnapshot.id === null) {
          /* not working */
          text = 'X';
        }else{
          /* value is "true", person is working */
          text = query;
        }


      return text;
    }
    $scope.s1n = await getOneDay(/*uid*/, /*key*/, "Saturday1Night", $scope.s1n)

推荐阅读
  • 本文详细探讨了 jQuery 中 `ajaxSubmit` 方法的使用技巧及其应用场景。首先,介绍了如何正确引入必要的脚本文件,如 `jquery.form.js` 和 `jquery-1.8.0.min.js`。接着,通过具体示例展示了如何利用 `ajaxSubmit` 方法实现表单的异步提交,包括数据的发送、接收和处理。此外,还讨论了该方法在不同场景下的应用,如文件上传、表单验证和动态更新页面内容等,提供了丰富的代码示例和最佳实践建议。 ... [详细]
  • 如果应用程序经常播放密集、急促而又短暂的音效(如游戏音效)那么使用MediaPlayer显得有些不太适合了。因为MediaPlayer存在如下缺点:1)延时时间较长,且资源占用率高 ... [详细]
  • javax.mail.search.BodyTerm.matchPart()方法的使用及代码示例 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • php更新数据库字段的函数是,php更新数据库字段的函数是 ... [详细]
  • 在JavaWeb开发中,文件上传是一个常见的需求。无论是通过表单还是其他方式上传文件,都必须使用POST请求。前端部分通常采用HTML表单来实现文件选择和提交功能。后端则利用Apache Commons FileUpload库来处理上传的文件,该库提供了强大的文件解析和存储能力,能够高效地处理各种文件类型。此外,为了提高系统的安全性和稳定性,还需要对上传文件的大小、格式等进行严格的校验和限制。 ... [详细]
  • C++ 异步编程中获取线程执行结果的方法与技巧及其在前端开发中的应用探讨
    本文探讨了C++异步编程中获取线程执行结果的方法与技巧,并深入分析了这些技术在前端开发中的应用。通过对比不同的异步编程模型,本文详细介绍了如何高效地处理多线程任务,确保程序的稳定性和性能。同时,文章还结合实际案例,展示了这些方法在前端异步编程中的具体实现和优化策略。 ... [详细]
  • 设计实战 | 10个Kotlin项目深度解析:首页模块开发详解
    设计实战 | 10个Kotlin项目深度解析:首页模块开发详解 ... [详细]
  • com.sun.javadoc.PackageDoc.exceptions()方法的使用及代码示例 ... [详细]
  • oracle c3p0 dword 60,web_day10 dbcp c3p0 dbutils
    createdatabasemydbcharactersetutf8;alertdatabasemydbcharactersetutf8;1.自定义连接池为了不去经常创建连接和释放 ... [详细]
  • 解决Bootstrap DataTable Ajax请求重复问题
    在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ... [详细]
  • 本文将详细介绍如何在Webpack项目中安装和使用ECharts,包括全量引入和按需引入的方法,并提供一个柱状图的示例。 ... [详细]
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
  • 本文详细介绍了使用 Python 进行 MySQL 和 Redis 数据库操作的实战技巧。首先,针对 MySQL 数据库,通过 `pymysql` 模块展示了如何连接和操作数据库,包括建立连接、执行查询和更新等常见操作。接着,文章深入探讨了 Redis 的基本命令和高级功能,如键值存储、列表操作和事务处理。此外,还提供了多个实际案例,帮助读者更好地理解和应用这些技术。 ... [详细]
  • 本文探讨了如何利用 jQuery 的 JSONP 技术实现跨域调用外部 Web 服务。通过详细解析 JSONP 的工作原理及其在 jQuery 中的应用,本文提供了实用的代码示例和最佳实践,帮助开发者解决跨域请求中的常见问题。 ... [详细]
author-avatar
我的菜菜呀
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有