当前位置:  开发笔记 > 编程语言 > 正文

在AWS Lambda中收听Firebase数据库超时

如何解决《在AWSLambda中收听Firebase数据库超时》经验,为你挑选了0个好方法。

我正在构建一个Alexa技能,这需要我收听Firebase实时数据库.在技​​能的一个特定部分,我需要向Firebase编写一个JSON对象,由两个字段组成,"intent",值无关紧要,"done",值为false.

然后,我等待另一个监听此数据库的设备注册此更改,此时它会创建另一个名为"result"的字段,并带有一些数值,并将"done"的值更改为true.

然后原始函数(test1)应该识别"完成"的值何时为真,然后检索"结果"的值.

我遇到的问题是提出一个函数,它在我的主(异步)函数完成之前完成所有这些读/写操作.正如标题所示,AWS Lambda由于某种原因超时,我无法读取"结果"的值.

这是我正在使用的功能:

function test1(intentName, targetRef, context) {
    console.log("writing");
    targetRef.set({
        intent: intentName,
        done: false
    }).then(function() {
        return targetRef.orderByChild("done").equalTo(true).on("value");
    }).then(function(snapshot) {
        var res = snapshot.val().result;
        console.log("Res: " + res);
        context.succeed( //context.succeed should be called after "result" has a value.
            generateResponse(
                buildSpeechletReponse("The result is" + processNumbersForSpeech(res), true),
                {}
            )
        );
    });
}

这是控制台的输出(在AWS Lambda中):

    ?
20:05:31
START RequestId: a25d2354-d9cb-11e6-b80a-f35142a5f45f Version: $LATEST
20:05:31
2017-01-13T20:05:31.464Z    a25d2354-d9cb-11e6-b80a-f35142a5f45f    writing
?
20:05:35
END RequestId: a25d2354-d9cb-11e6-b80a-f35142a5f45f
?
20:05:35
REPORT RequestId: a25d2354-d9cb-11e6-b80a-f35142a5f45f  Duration: 4001.15 ms    Billed Duration: 4000 ms Memory Size: 128 MB    Max Memory Used: 39 MB
?
20:05:35
2017-01-13T20:05:35.335Z a25d2354-d9cb-11e6-b80a-f35142a5f45f Task timed out after 4.00 seconds

以下是Firebase数据的结构:

在此输入图像描述

"完成"最初是假的.当其他设备添加"结果"时,它还会将"完成"的值更新为true."148434459 ..."是targetRef.

真的很感激你的帮助.如果需要,我会提供更多信息.

推荐阅读
夏晶阳--艺术
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有