我有这个辅助函数:
const listFileKeysInSpaceByPrefix = async (prefix) => {
var params = {
Bucket: process.env.S3_BUCKET_NAME,
Prefix: prefix,
};
let fileKeys;
await s3.listObjects(params, function (err, data) {
if (err) {
console.log(err, err.stack);
next(err);
}
let keys = [];
data["Contents"].forEach(function (obj) {
keys.push(obj.Key);
});
console.log("key1", keys);
fileKeys = keys;
});
return fileKeys;
};
我在路由中像这样调用helper函数:
const keyToBeDeleted = await listFileKeysInSpaceByPrefix(uploadSpaceFolder);
console.log("keys",keyToBeDeleted);
在我的控制台上的结果是这样的:
keys undefined
key1 ['adamter/rr0.png', 'adamter/rt0.png']
当我调用函数时,我需要在我的响应中获得数组,但我似乎找不到解决这个问题的方法。
Try withcallbackfunction。
const listFileKeysInSpaceByPrefix = (prefix, callBackFn) => {
var params = {
Bucket: process.env.S3_BUCKET_NAME,
Prefix: prefix,
};
s3.listObjects(params, function (err, data) {
if (err) {
console.log(err, err.stack);
next(err);
}
let keys = [];
data["Contents"].forEach(function (obj) {
keys.push(obj.Key);
});
console.log("key1", keys);
callBackFn(keys);
});
};
function yourFunction() {
function callBackFn(keyToBeDeleted) {
// access keyToBeDeleted
// add your logic here
}
listFileKeysInSpaceByPrefix(uploadSpaceFolder, callBackFn);
}