Amazon web services AWS s3.ListBucket将数据对象保存在全局变量中-nodejs
我试图读取帐户中的存储桶,并将列表保存到其他函数可以访问的变量中 我正在尝试使用全局变量 结果: 全局变量值未保留/保存 节点:v10 代码:Amazon web services AWS s3.ListBucket将数据对象保存在全局变量中-nodejs,amazon-web-services,amazon-s3,aws-sdk,Amazon Web Services,Amazon S3,Aws Sdk,我试图读取帐户中的存储桶,并将列表保存到其他函数可以访问的变量中 我正在尝试使用全局变量 结果: 全局变量值未保留/保存 节点:v10 代码: var AWS=require('AWS-sdk'); AWS.config.update({地区:'eu-west-1'}); s3=新的AWS.s3({apiVersion:'2006-03-01'}); 让布利斯特; getbucket(); 控制台日志(“列表:+blist”); 异步函数getBucket(){ let response=wa
var AWS=require('AWS-sdk');
AWS.config.update({地区:'eu-west-1'});
s3=新的AWS.s3({apiVersion:'2006-03-01'});
让布利斯特;
getbucket();
控制台日志(“列表:+blist”);
异步函数getBucket(){
let response=wait s3.listbackes().promise();
//做你的处理
var bucket=response.bucket.map(x=>x.Name);
控制台日志(“桶:+桶);
blist=桶;
//返回bnames;
}
s3.ListBucket是一个异步函数,因此当您分配给变量时,不会得到预期的结果。你最好考虑使用承诺来链接它们或使用。
使用承诺:
s3.listBuckets().promise()
.then((response) => {
// do your processing
});
async function someFn() {
let response = await s3.listBuckets().promise();
// do your processing
}
使用异步/等待:
s3.listBuckets().promise()
.then((response) => {
// do your processing
});
async function someFn() {
let response = await s3.listBuckets().promise();
// do your processing
}
这段代码的工作原理如下:
import S3 from "aws-sdk/clients/s3.js";
const main = async () => {
const s3 = new S3({ apiVersion: "2006-03-01" });
const buckets = await s3.listBuckets().promise();
console.log(JSON.stringify(buckets));
};
(async () => {
try {
await main();
} catch (e) {
console.error(e);
}
})();
s3.ListBucket()
不返回文本,它返回一个请求对象。。。当异步调用它时,您不需要它,就像您正在做的那样。您的返回数据回调中的code>没有意义,因为回调中的turn值被丢弃。谢谢@dilip的解释。我尝试过使用异步函数,但它仍然是一样的。我现在用更新的程序修改了最初的帖子。blist全局变量仍然未定义,但bucket局部变量获取所有bucket名称。