Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 获取用户输入并通过Firebase数据库进行搜索_Node.js_Firebase_Firebase Realtime Database_Dialogflow Es_Google Home - Fatal编程技术网

Node.js 获取用户输入并通过Firebase数据库进行搜索

Node.js 获取用户输入并通过Firebase数据库进行搜索,node.js,firebase,firebase-realtime-database,dialogflow-es,google-home,Node.js,Firebase,Firebase Realtime Database,Dialogflow Es,Google Home,我目前正在使用DialogFlow和Firebase数据库做一个项目。我一直在努力解决的主要问题是,如何获取用户输入并在Firebase数据库中搜索它? 正如您在代码中所看到的,我现在有if-else语句来帮助我过滤它,但是随着更多的事件存储在数据库中,我发现if-else语句将不会有效和可行。所以,请告诉我如何最好地接受用户的输入并根据他们的请求搜索数据库。例如,他们可能会问“8月15日发生了什么事件?”,然后该函数应搜索8月15日的数据库,并通知他们当天发生的任何事件。希望很快收到你的来信

我目前正在使用
DialogFlow
Firebase
数据库做一个项目。我一直在努力解决的主要问题是,如何获取用户输入并在
Firebase
数据库中搜索它? 正如您在代码中所看到的,我现在有if-else语句来帮助我过滤它,但是随着更多的事件存储在数据库中,我发现if-else语句将不会有效和可行。所以,请告诉我如何最好地接受用户的输入并根据他们的请求搜索数据库。例如,他们可能会问“8月15日发生了什么事件?”,然后该函数应搜索8月15日的数据库,并通知他们当天发生的任何事件。希望很快收到你的来信

function askDate(agent) {
const date1 = agent.parameters.date;

return admin.database().ref('date').transaction((date)=>
{
    let askdate = date.askDate;
    let activity = date.activity;

    let askdate1 = date.twelfthAugust.askDate;
    let activity1 = date.twelfthAugust.activity;

    let askdate2 = date.fourthAugust.askDate;
    let activity2 = date.fourthAugust.activity;

    let askdate3 = date.ninthAugust.askDate;
    let activity3 = date.ninthAugust.activity;
    if (date1 == askdate)
    {
        agent.add("We have " + activity);
    }
    else if (date1 == askdate1)
    {
        agent.add("We have " + activity1);
    }
    else if (date1 == askdate2)
    {
        agent.add("We have " + activity2);
    }
    else if (date1 == askdate3)
    {
        agent.add("We have " + activity3);
    }
    else 
    {
        agent.add("We do not have any events on this day!");
    }
    return date;
},
function (error, isSuccess) {
    console.log('Success: ' + isSuccess);

});
}

您只需要设计意图来捕获用户的日期。将此日期传递给webhook,并使用类似“
从DB中选择事件,其中date=userProvidedDate


您应该根据日期从数据库中获取事件,而不是if-else。你需要看看你将如何做到这一点

请分享这个用例。@AbhinavTyagi您好,基本上,用户可以向谷歌主页询问一些事情,例如事件和课程。例如,在本例中,用户希望询问Google Home 2018年8月5日是否有活动。dialogflow随后将引用数据库,搜索用户指定的日期,并通知他们该日期是否有事件。我担心的是,如果我继续使用if-else语句,它将不会非常有效,因为将添加更多的事件。因此,有没有一种方法可以简化if-else语句?