NodeJs / Google Firebase函数字符串方法不起作用

时间:2018-12-02 23:45:48

标签: javascript node.js firebase dialogflow actions-on-google

我有一个Google Assistant应用,该应用使用一些API来检索和传递我当地大学的公交车到达时间。问题是API以这样的字符串返回到达时间:

“ 2018-51-02T06:51:11”

我尝试使用存在于javascript中的slice和indexOf函数处理该字符串,以获取该字符串的最后时间部分,确切的代码是

finalString = departure.slice(departure.indexOf('T')+1, departure.length);

,但是最后,它仍然只打印出来并以原始字符串作为响应。该代码可以在我的计算机上脱机使用,也可以在本地使用,但在上载到Firebase Functions时不再可用。这个问题有帮助吗?

app.intent("wheres the catabus", (conv, {route}) => {
    var routeDetails;
    var closest_stop;
    var finalString;
    return cataAPIService.getRouteDetails(route)
    .then((routeData) => {
        routeDetails = routeData;
        closest_stop = cataAPIService.findClosestStop(routeData, conv.device.location);
        return cataAPIService.getStopDetails(closest_stop.StopId)
    })
    .then((stopData) => {
        var departure = cataAPIService.getEstimatedStopDeparture(routeDetails, stopData);
        finalString = departure.slice(departure.indexOf('T')+1, departure.length);

        conv.ask('The closest stop to you is at ' + closest_stop.Name + '. The next departure is scheduled for ' + finalString);
    })
    .catch((error) => {
        console.log(error);
        conv.ask("I can't get that information right now, please try again.");
    });
});

1 个答案:

答案 0 :(得分:1)

我无法使用node.js 6和以下代码在Firebase Cloud Functions中重复您的问题:

var departure="2018-51-02T06:51:11";
var finalString = departure.slice(departure.indexOf('T')+1, departure.length);
console.log('finalstring',finalString);

如预期的那样,它将以下内容发送到日志:

  

finalstring 06:51:11

如果显示出导致问题的完整代码,我们可能会为您提供帮助。

您看到的行为表明字符串中实际上没有“ T”。

否则,我通常会更像这样使用代码:

var f2 = departure.split('T')[1];

(但前提是我知道在日期时间实际上有一个T)