我如何在写作时在谷歌云存储中公开文件?



我在nodejs中使用firebase-admin的代码片段,有时由于并发问题而失败。

对象"是在操作过程中编辑的。请重试。

const file = storage.bucket().file(photoPath);
await file.save(pngData);
await file.makePublic();

我希望这些是新文件,当这段代码运行时,所以我的猜测是发生了什么是文件被上传和一个触发器发生更新文件。我没有触发,所以我猜这可能是一些管理谷歌或firebase正在做的事情。理想情况下,我宁愿使用相同的命令创建公开的文件,而不是进行重试。这些文件是用来在移动应用程序和网站上使用的。

我看到save有以下选项,但是都创建了没有公共url的文件。

await file.save(pngData, { public: true });
// or
await file.save(pngData, { predefinedAcl: 'publicRead' });

有谁对如何处理这个问题有什么想法吗?

编辑file.makePublic()

上偶尔会抛出以下问题
The metadata for object "<path>" was edited during the operation. Please try again.
at new ApiError (/Users/gibb-mac/Documents/Projects/abdoc/node_modules/@google-cloud/storage/build/src/nodejs-common/util.js:79:15)
at Util.parseHttpRespBody (/Users/gibb-mac/Documents/Projects/abdoc/node_modules/@google-cloud/storage/build/src/nodejs-common/util.js:214:38)
at Util.handleResp (/Users/gibb-mac/Documents/Projects/abdoc/node_modules/@google-cloud/storage/build/src/nodejs-common/util.js:155:117)
at /Users/gibb-mac/Documents/Projects/abdoc/node_modules/@google-cloud/storage/build/src/nodejs-common/util.js:535:22
at onResponse (/Users/gibb-mac/Documents/Projects/abdoc/node_modules/retry-request/index.js:240:7)
at /Users/gibb-mac/Documents/Projects/abdoc/node_modules/teeny-request/src/index.ts:333:11
at runMicrotasks (<anonymous>)
at processTicksAndRejections (node:internal/process/task_queues:96:5)```

我意识到我的数据集,我派生什么图像使用有一些重复。每当我尝试在同一批处理中再次将文件公开时,就会抛出此错误。

很抱歉。

最新更新