如何通过节点获取

时间:2020-03-05 17:46:44

标签: node.js api async-await dialogflow-es 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 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');
});

上面的代码现在正在执行我期望的操作,即获取数据,然后将数据存储到变量中,以便在将其存储到变量中时可以像以前那样将其呈现给用户说“未定义”,这可能是因为我没有使用异步/等待。无论如何,我还有什么可以改善此代码/整理吗?

0 个答案:

没有答案
相关问题