使用 firebase-queue 返回任务结果

2023-12-01

我正在使用 Firebase 开发移动应用程序。在移动应用程序中,我需要根据用户的手机号码注册用户,类似于 Whatsapp。我打算使用 Nexmo 来验证用户的手机号码。验证号码涉及两个步骤。

  1. 将用户手机号码发送到 Nexmo API,成功后会返回 request_id,还会通过短信向用户手机发送代码
  2. 将代码和 request_id 发送到 Nexmo 以验证号码

我想使用 firebase-queue 来执行这些任务。我想问是否有办法将任务结果返回给客户端。我在 firebase-queue 文档中没有看到任何这样的示例。基本上,我想添加一个任务来将手机号码发送到 Nexmo API,并希望获取 request_id 作为响应,以便我可以添加另一个任务来验证用户输入的代码。


肯定有一种方法可以将响应返回给客户端。我们在这方面有一个很好的例子手电筒搜索集成:

  function doSearch(index, type, query) {
      var ref = new Firebase(URL+'/search');
      var key = ref.child('request').push({ index: index, type: type, query: query }).key();
      console.log('search', key, { index: index, type: type, query: query });
      ref.child('response/'+key).on('value', showResults);
    }

此代码在客户端 JavaScript 应用程序中运行,并将搜索词发送到调用的行中的服务器push()。然后,它“等待”函数最后一行的响应返回。这里的关键是它使用用于发送请求的 sam Push id/key 来监听响应。这样请求和响应就会匹配。

虽然 Firebase 队列没有对此类“握手”的内置支持,但您可以轻松地将其自行构建到应用的客户端和服务器代码中。当您添加任务时,您将添加一个请求 id(适配器来自firebase 队列示例):

var request_id = ref.push().key();
ref.child('queue/tasks').push({ requestId: request_id, foo: 'bar' });

在任务工作线程中,您执行通常的处理,然后使用相同的请求 id(来自适配器的适配器)将响应写回到数据库中。firebase 队列示例):

var ref = new Firebase('https://<your-firebase>.firebaseio.com/queue');
var responses = new Firebase('https://<your-firebase>.firebaseio.com/responses');
var queue = new Queue(ref, function(data, progress, resolve, reject) {
  // Read and process task data
  console.log(data);

  // Do some work
  progress(50);

  // Finish the task asynchronously
  setTimeout(function() {
    // write the response to the client
    responses.child(data.requestId).set({ allDone: true });
    // tell firebase-queue that we're done
    resolve();
  }, 1000);
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 firebase-queue 返回任务结果 的相关文章

随机推荐

  • 在电子表格的应用程序脚本中选择连续范围

    是否可以获取特定单元格周围的范围 类似于电子表格中的 Ctrl A 我有许多电子表格 其中的表格是由QUERY 功能 因此边界是灵活的 过去 我采用设置命名范围的方法 这些命名范围的大小是我预期的 QUERY 结果所需的最大大小 并将这些命
  • 如何在VS2008中针对3.5的项目中引用framework 4.0 dll

    我有一个使用 4 0 框架在 VS2010 中创建的 dll 是的 它是完整的 4 0 而不是客户端配置文件 我想在 VS2008 项目中引用它 这意味着即使我愿意 我也无法将引用项目重新定位到 4 0 并且无法将该项目升级到 VS2010
  • 编译,对于android 6.0,adb为“device-on-target”

    由于某种原因 在 android 6 0 上 device on target 的 adb 构建已从 Android mk 中删除 实际上 这非常有用 您可以看到 6 0 mk 和 5 0 mk 之间的差异 6 0 米克 https git
  • 用 lme4 数据绘制两个连续变量的交互作用

    我正在尝试绘制 R 中两个连续变量之间的交互作用 但是 我的数据是多级的 人们在几天内嵌套 因此在绘制图表时我需要考虑数据的嵌套结构 我使用 lme4 库分析数据以解释嵌套结构 但我很难弄清楚如何绘制它的图表 example data sp
  • 创建手动线程 - 但获得重复线程

    问题 获取重复的项目 即创建的线程数量多于数组大小 大家好 我正在为数组的每个元素循环创建线程 真正的用途是使用亚马逊ses发送一批消息 消息存储在 messageamazonRequestBatch 中 循环运行该批处理并发送消息 这是代
  • 当我调用基类上的方法时,如何调用后代的实现?

    我的顶级课程是TBaseDB 它有一个后代TCommonDB and TCommonDB将有多个后代 例如TProdDB and TDevDB 让我们创建一个函数each类定义 称为Test1 目前 它所做的只是ShowMessage So
  • 不允许的附加属性:可为 null 的 swagger

    我正在使用 swagger 2 0 和 Node js Express 4 12 3 和 mysql db 我创建了以下架构 Country type object properties id type integer readOnly t
  • org.hibernate.LazyInitializationException:无法初始化代理 - 没有会话?

    我正在尝试从数据库中的对象进行简单的加载 但我收到错误 无法初始化代理 无会话 有什么想法吗 谢谢 org hibernate LazyInitializationException could not initialize proxy n
  • 如何捕获Python subprocess.check_output() 的异常输出?

    我正在尝试从 Python 中进行比特币支付 在 bash 中我通常会这样做 bitcoin sendtoaddress
  • 无法在 databricks 运行时版本 7 中使用 shell 命令访问 /dbfs/FileStore

    在 databricks 运行时版本 6 6 中 我能够成功运行如下 shell 命令 sh ls dbfs FileStore tables 但是 在运行时版本 7 中 这不再起作用 有没有办法在运行时版本7中直接访问 dbfs File
  • 为什么“构建项目”失败而“运行”(Maven 配置)成功?

    有问题的案例 一个基于 Maven 的项目 其 Maven 运行配置的 命令行 参数定义为clean install 单击绿色箭头调用 Run my maven config 将从 Nexus 下载所有必需的包并成功完成构建 然而 选择 构
  • 计算受 DELETE 影响的行数

    我用这个代码来验证DELETE句子 但我相信你知道更好的方法 CREATE OR REPLACE FUNCTION my schema sp delete row table table name character varying id
  • Serilog.Exception 解构器的 JSON 配置

    我正在将 Serilog 添加到项目中 并且我特别想添加Serilog Exceptions以及 继指导方针我已经成功添加了异常丰富器 但我还需要链接页面中提到的解构 使用流畅的配置可以正常工作 config Enrich WithExce
  • MySQL 中的数组

    我想将数组存储在记录中 Table1 ID Name Friends friends should be an array 1 Bill 2 3 2 Charles 1 3 3 Clare 1 我希望能够进行这样的搜索 SELECT FRO
  • 使用加载了 Ajax 内容的 jQuery“点击”功能?

    我有一个通过 Ajax 加载的 php 文件的内容 其中包含 HTML 和 JavaScript 我有一个按钮
  • 在 Visual Studio Web 测试中转义上下文参数格式

    我正在尝试弄清楚如何通过 Visual Studio Web 测试在 POST 中传递特定的数据 而不将其识别并视为上下文参数 POST 包含一个 字符串 主体 它是一个 json 文档 身体的一部分包括如下内容 My Attribute
  • Emacs 区域高亮显示

    有没有办法在字体锁定模式打开的缓冲区中突出显示文本中的字符串 但不是所有此类字符串 假设我有一个 SQL 模式的缓冲区 我想突出显示其中的一个字符串 下面的代码不起作用 set text properties 10 20 face hi y
  • 康康舞能力在单独的文件中

    是否可以在单独的文件中定义能力并将其包含在初始化方法内的ability rb文件中 下面的代码返回 尝试并得到 未定义的方法 can 能力 rb def initialize user include MyExtension Somethi
  • 简化反三角代码(While 循环)

    我已经成功创建了一个代码来使用 while 循环打印水平翻转的三角形 现在虽然它有效 但我想知道是否可以简化它 即不使用 store 变量 但我想用 while 循环保留它 当前代码是 myLen int input Enter the n
  • 使用 firebase-queue 返回任务结果

    我正在使用 Firebase 开发移动应用程序 在移动应用程序中 我需要根据用户的手机号码注册用户 类似于 Whatsapp 我打算使用 Nexmo 来验证用户的手机号码 验证号码涉及两个步骤 将用户手机号码发送到 Nexmo API 成功