Javascript Firebase数据库函数在DialogFlow上不能正常工作

Javascript Firebase数据库函数在DialogFlow上不能正常工作,javascript,node.js,firebase-realtime-database,dialogflow-es,Javascript,Node.js,Firebase Realtime Database,Dialogflow Es,我正在为一个聊天机器人编写代码,但我的firebase DB上的数据库查询有一个问题,我不知道如何解决,因为它与我发现的其他示例相同 var ref = admin.database().ref(); var consultasRef = ref.child('consultas') agent.add('Test 2') consultasRef.on("value", function(snap){ agent.add('Test 3')

我正在为一个聊天机器人编写代码,但我的firebase DB上的数据库查询有一个问题,我不知道如何解决,因为它与我发现的其他示例相同

    var ref = admin.database().ref();
    var consultasRef = ref.child('consultas')

    agent.add('Test 2')

    consultasRef.on("value", function(snap){
        agent.add('Test 3')
        agent.add(snap.val());
    });
如前所述,该函数应打印
快照(val)
。它没有像它应该的那样开始。正确的语法与我使用的语法相同。与函数内部的“测试3”不同,“测试2”正在打印


对于那些不熟悉Dialogflow的人,
agent.add()
与JS上的
console.log()
相同,但对于Dialogflow。

当您进行异步调用(例如数据库调用)时,必须返回意图处理程序的承诺,以便它知道调用何时完成,以便将结果发送回bot

此外,您可能希望使用
once()
函数,因为您不关心数据库更新(因为结果已经发送)

您可能可以使用如下代码执行这两项操作:

return consultasRef.once('value')
  .then( snap => {
    agent.add('Test 3');
    agent.add(snap.val());
  });
根据您使用的集成,添加一个或两个以上的文本回复也可能存在问题