amazon-web-services - AWS s3.listBuckets 将数据对象保存在全局变量中 - nodejs
问题描述
我正在尝试读取帐户中的存储桶并将列表保存到其他函数可以访问的变量中。
我正在尝试使用全局变量。
结果:未保留/保存全局变量值。
节点:v10 代码:
var AWS = require('aws-sdk');
AWS.config.update({region: 'eu-west-1'});
s3 = new AWS.S3({apiVersion: '2006-03-01'});
let blist;
getBuckets();
console.log("list: " + blist);
async function getBuckets() {
let response = await s3.listBuckets().promise();
// do your processing
var buckets = response.Buckets.map(x=>x.Name);
console.log("buckets: " + buckets);
blist = buckets;
//return bnames;
}
输出:
Output:
(GV) List: undefined (blist)
(LV) Buckets: [all good]
全局变量值未定义。
有人可以帮帮我吗?我只需要从不同的函数访问存储桶名称列表。
解决方案
s3.listBuckets 是一个异步函数,因此当您分配给变量时,您不会得到预期的结果。您最好考虑使用 Promise 链接它们或使用async/await。
使用承诺:
s3.listBuckets().promise()
.then((response) => {
// do your processing
});
使用异步/等待:
async function someFn() {
let response = await s3.listBuckets().promise();
// do your processing
}
推荐阅读
- java - 如何使删除然后写入数据库的方法具有事务性?
- mysql - Codeigniter 更新数据库表
- python - 在 Python 的另一个类 ElementTree 中继续解析
- javascript - 如何使用 bootstrap-datepicker sanbox 限制 1 个月内的天数选择?
- xml - XSLT (1.0) 如何在 CDATA 标记中包装元素值时保留 html 标记
- android - 限制房间插入
- javascript - 通过事件对象检测输入模式验证
- arrays - 无论深度如何,如何在 Go 中找到所有具有特定扩展名的文件?
- python-3.x - 将日期时间序列转换为数字时间戳
- angular - Angular Reactive forms : change vs valueChanges