【发布时间】:2020-05-10 18:12:25
【问题描述】:
我是 javascript 世界的新手,一直在修改 Actions on Google。我有一个之前正在运行的操作,但在尝试简化我的代码之后,我遇到了一个我似乎无法弄清楚的新错误。该代码应该调用数据库并根据用户选择的日期向用户返回信息。
问题: 该代码应该调用数据库并根据用户选择的日期向用户返回信息。当我使用 axios 调用 URL 时,意图似乎崩溃了。当我测试我的函数时,我从 Google Cloud Platform 收到以下错误:“错误:未设置响应。这是在未作为对意图处理程序的承诺返回的异步调用中使用的吗?”
app.intent('Moon', (conv, {date}) => {
// Sets date to today if none given
if (!date) {
date = new Date().toISOString();
}
// Slices date string to match date format in database
const dateSlice = date.slice(5, 9);
// Call to row in dabase for the given date
function getData() {
return axios.get(`example.com/search?Date=${dateSlice}`);
}
return getData().then(res => {
res.data.map(con => {
conv.ask(`On X date there will be a ${con.Object1}`);
});
});
});
我对 Promise 和 await 了解不多,但这似乎是问题所在。我不确定在没有这些对象的情况下如何让我的代码运行。我试图在返回之前插入一个 Promise 对象,但这会使函数的其余部分无法访问。我还检查了 Axios 是否有任何更新,但没有,我使用的是最新版本。错误是否与返回之一有关?
【问题讨论】:
-
尝试将句子组合成一个句子,然后调用
conv.close(sentence);可能吗?还有一个错字可能:${dataSlice}应该是${dateSlice};可能是 axios 请求失败了 -
您指出错字是正确的。如果在示例中修复了它,但这只是我在将代码复制到 Stack Overflow 时犯的一个错误;我的实际代码没有这个问题。
标签: javascript node.js promise dialogflow-es actions-on-google