我正在尝试从某些Firebase存储对象中获取元数据,并将元数据转换为简单的对象列表。最终目标是按照列表中的对象上载的时间对其进行排序。
但是,我在使用异步功能及其范围方面遇到了麻烦。
该代码作为firebase函数执行,这是代码:
exports.listItems = functions.storage.object().onFinalize(async (object) => {
const [files] = await storage.bucket(bucketName).getFiles();
async function metadata(files) {
let items = [];
await files.forEach(async (file) => {
const [metadata] = await storage
.bucket(bucketName)
.file(file.name)
.getMetadata();
let item_object = { name: metadata.name, updated: metadata.updated };
console.log(item_object);
items.push({ yup: 'yuppa' });
items.push(item_object);
});
return items
}
let items = await metadata(files)
items.push('test')
console.log(items)
});
上面的代码将以下内容记录到控制台:
[ 'test' ]
Function execution took 501 ms, finished with status: 'ok'
{ name: 'public_wall/_2420565.jpg', updated: '2019-09-19T14:52:22.254Z' }
{ name: 'public_wall/_2420498.jpg', updated: '2019-09-19T14:39:22.278Z' }
因此,元数据功能内的代码仅在该功能的其余部分结束后才执行,因此不会附加到列表中。我该如何解决?