【问题标题】:Javascript: passing data from local to globalJavascript:将数据从本地传递到全局
【发布时间】:2021-04-17 03:53:27
【问题描述】:

我正在练习 AWS-S3 存储桶并将数据从本地范围传递到全局范围。这是一个简单的 Javascript 概念。我有从 S3 存储桶获取的字符串值数组。当我控制台时,我可以看到我的数据。我正在尝试将这些数据传递给全局范围。我尝试了推送方法,传播运算符,但它不起作用。全局范围给了我空数组。我不明白我做错了什么。

我像这样从 S3 存储桶中获取数据

["182363", "j9292092", "20282"]

我想将我的数据传递给全局变量。

这是我的一段代码

  const allSKU = []
  await s3.getObject(params, function (err, data) {
    if (err) console.log(err, err.stack);
    // else console.log(data.Body.toString('utf-8')); // I can see the data
    const allSku = data.Body.toString('utf-8')
    //console.log(allSku);
    allSKU.push(allSku)
  });


  console.log(allSKU); // give me empty arrays

【问题讨论】:

  • s3.getObject 没有返回承诺,供我们使用 await。你可以试试const data = await s3.getObject(params).promise()
  • 谢谢@BaluVyamajala。我在质疑自己的 js 技能:D

标签: javascript arrays amazon-s3 push


【解决方案1】:

在传递回调方法时,await 无效,因为方法没有返回 promise

s3.getObject(params, function (err, data) => {})

我们可以通过在大多数 AWS v2 SDK 方法上调用 .promise() 来返回一个承诺。

   const data = await s3.getObject(params).promise()

【讨论】:

  • 需要一点帮助@Balu,你知道如何从 s3 存储桶中检索数据作为数组集。我想要这样的输出 [1122, 23456, 11345]
  • 你的意思是每个文件?当我们读取 s3 对象时,我们会得到一个 Buffer,我们需要转换成字符串。
  • 我想通了:D
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-28
  • 2017-06-09
  • 2012-11-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-10
相关资源
最近更新 更多