Javascript Firebase数据库函数在DialogFlow上不能正常工作
我正在为一个聊天机器人编写代码,但我的firebase DB上的数据库查询有一个问题,我不知道如何解决,因为它与我发现的其他示例相同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')
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());
});
根据您使用的集成,添加一个或两个以上的文本回复也可能存在问题