node.js - 如何从 node-fetch 存储变量
问题描述
我正在编写一个小项目,以使用 node-fetch 从 DynamoDB 获取数据,然后使用 Dialogflow 将该数据呈现给用户。下面是我的代码示例,目前正在获取我需要的数据。
function getstock(agent) {
const product = agent.parameters.product;
const prodid = parseInt(product, 10);
var url = 'link';
var data = {
"prodid": prodid
};
fetch(url, {
method: 'POST',
body:JSON.stringify(data),
headers: {
'Content-Type': 'application/json'
}
}).then((resp) => {
resp.json();
}).then((data) => {
console.log(data);
});
}
但是我无法将该数据分配到一个变量中,这样我就可以使用agent.add('blah blah ${variable_name}')
. 我已经阅读了几篇文章,我认为问题在于我没有使用 async/await 功能。但是,我对这类东西相对较新,任何帮助将不胜感激。
已编辑
我已经更新了上面的代码以使用 async/await
async function getstock(agent) {
const product = agent.parameters.product;
const prodid = parseInt(product, 10);
var url = 'link';
var data = {
"prodid": prodid
};
const response = await fetch(url, {
method: 'POST',
body:JSON.stringify(data),
headers: {
'Content-Type': 'application/json'
}
});
const jsondata = await response.json();
return jsondata;
}
getstock(agent)
.then(response => {
let prodStock = response.Item.stock;
let prodName = response.Item.product;
console.log("the data is" + prodStock);
agent.add(`The ${prodName} stock is ${prodStock}`);
}).catch(err => {
console.log('error');
});
上面的代码现在正在做我期望它做的事情,即获取数据并稍后将该数据存储到一个变量中,以便我可以在将它存储到一个变量时将其呈现给用户,它只会说“未定义” ' 这可能是因为我没有使用异步/等待。还有其他我可以改进此代码/整理的方法吗?
解决方案
推荐阅读
- string - 有没有办法在 Scala 中对 CSV 文件中的值进行排序?
- javascript - 如何将烧瓶返回值作为java脚本函数的变量传递
- ios - 分段控制未按预期准确执行
- android - Unity 插件的运行时错误(从 Activity 外部启动Activity..)
- javascript - 查询执行后覆盖 Javascript 变量
- opencv - 浮点像素值如何转换为整数值?
- html - 如何对齐以垂直居中我的 jumbotron 和导航栏?
- php - 带有媒体上传按钮的自定义 Wordpress 小部件在每个小部件上插入相同的图像
- redux - 为什么尝试在 nextjs 项目中加载 babel 插件时似乎存在不确定的行为?下一个 - 通天塔
- c# - 尝试在 C# 中重试后随机生成答案