FetchError通过Nodejs Firebase函数删除文件谷歌云存储



我在尝试删除单个存储桶中的多个文件时遇到fetchError。我的应用程序需要查找较旧的对象,然后删除用户上传到云存储的任何文件。

因此,当我循环浏览要删除的文件时,当有太多文件要删除时,我似乎会得到fetchError。

起初它运行良好(测试阶段(,但现在我注意到,当同时有太多文件要删除时,我会收到fetchError。

错误:

{ FetchError: request to https://storage.googleapis.com/storage/v1/b/bucketName/o/filePath? failed, reason: socket hang up
at ClientRequest.<anonymous> (/srv/node_modules/node-fetch/lib/index.js:1453:11)
at emitOne (events.js:116:13)
at ClientRequest.emit (events.js:211:7)
at TLSSocket.socketErrorListener (_http_client.js:401:9)
at emitOne (events.js:116:13)
at TLSSocket.emit (events.js:211:7)
at emitErrorNT (internal/streams/destroy.js:66:8)
at _combinedTickCallback (internal/process/next_tick.js:139:11)
at process._tickDomainCallback (internal/process/next_tick.js:219:9)
message: 'request to https://storage.googleapis.com/storage/v1/b/bucketName/o/filePath? failed, reason: socket hang up',
type: 'system',
errno: 'ECONNRESET',
code: 'ECONNRESET' }

我的删除功能:

我查询一个集合,然后循环querysnapshot以获得单独的文档snapshot,在那里我获得图像和视频文件路径,我将其传递到deleteFile(myBucketName, mediaFilePath)

const gcs = new Storage();
async function deleteFile(bucketName, fileName) {
await gcs.bucket(bucketName).file(fileName).delete();
}

我在想,我应该更新要删除的图像的元数据,并在onMetaDataChange的另一个函数中侦听以进行存储,然后删除它吗?这样会更好吗?

这似乎不是存储或云功能的问题。您处理多个请求的实现似乎存在问题,因为错误与套接字有关。(这里有更好的解释(。你可以使用批处理请求,或者这个答案可以帮助你。

最新更新