【问题标题】:FetchError while deleting files Google Cloud Storage via Nodejs Firebase functions通过Nodejs Firebase函数删除文件Google Cloud Storage时出现FetchError
【发布时间】:2020-04-26 18:40:59
【问题描述】:

我在尝试删除单个存储桶中的多个文件时遇到 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' }

我的删除函数:

我查询一个集合,然后循环查询快照以获取各个文档快照,从中获取图像和视频文件路径,然后将其传递给deleteFile(myBucketName, mediaFilePath)

const gcs = new Storage();

async function deleteFile(bucketName, fileName) {

 await gcs.bucket(bucketName).file(fileName).delete();

}

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

【问题讨论】:

    标签: node.js firebase google-cloud-storage


    【解决方案1】:

    这似乎不是存储或云功能的问题。由于错误与套接字有关,因此处理多个请求的实现似乎是一个问题。 (Here's 解释得更好)。你可以使用batch requests 或者这个answer 可以帮助你。

    【讨论】:

      猜你喜欢
      • 2019-05-22
      • 2017-08-27
      • 2018-01-03
      • 1970-01-01
      • 1970-01-01
      • 2013-06-16
      • 2017-09-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多