Bry*_*mer 1 node.js firebase google-cloud-functions firebase-storage
我正在尝试编写一个简单的函数,该函数将使用 Firebase 云函数迭代 Firebase 存储中文件夹中的所有文件。我花了几个小时尝试在线每个示例并阅读文档。
这就是我目前所拥有的:
exports.removeUnsizedImages = functions.pubsub.schedule('every 2 minutes').onRun((context) => {
const storage = admin.storage();
var storageRef = storage.ref();
storageRef.listAll().then(function(result) {
console.log("*", result);
})
});
Run Code Online (Sandbox Code Playgroud)
我收到一个错误,指出 storage.ref() 不是函数。
如果我尝试:
storage.listAll()
Run Code Online (Sandbox Code Playgroud)
它还告诉我 listAll 不是一个函数。
我真的没想到将文件放在文件夹中会这么难。
我究竟做错了什么?
更新后的代码现在可以运行
exports.removeUnsizedImages = functions.pubsub.schedule('every 24 hours').onRun((context) => {
admin.storage().bucket().getFiles({ prefix: "postImages/" }).then(function(data) {
const files = data[0];
files.forEach(function(image) {
console.log("***** ", image.name)
})
});
});
Run Code Online (Sandbox Code Playgroud)
您listAll使用的是 Firebase 存储客户端 SDK 中的函数,而不是管理 SDK 中的函数。
要获取 Admin SDK 中的所有文件,请尝试以下操作:
const allFiles = await admin.storage().bucket().getFiles({ prefix: "/user/images" })
Run Code Online (Sandbox Code Playgroud)
这里的前缀是您要列出的路径。
- 如果你只指定 prefix = 'a/',你会得到:
- /a/1.txt
- /a/b/2.txt
- 但是,如果您指定 prefix='a/' 和 delimiter='/',您将得到:
- /a/1.txt
您只需使用即可.getFiles()获取整个存储桶。更多详细信息可以在文档中找到
| 归档时间: |
|
| 查看次数: |
1572 次 |
| 最近记录: |