在firebase规则中如何在firestore中检查cloudstorage中是否存在记录

问题描述 投票:0回答:2

我在 firestore 中有记录,这些记录引用了我在 cloudstorage 中存储的文件的名称。在允许写入记录之前,我需要首先检查文件是否已上传到云存储。

我意识到这些文件稍后可能会被删除,但在编写记录时我需要检查它们是否已上传以限制错误。

我只需要针对每个请求检查一个文件。我尝试使用

exists
并参考我的存储桶,但我无法让它工作。

firebase google-cloud-firestore google-cloud-storage firebase-security
2个回答
0
投票

根据 Firestore 的安全规则,您无法访问 Firebase 存储中的数据。您可以尝试以下任一方法:

  • 确保添加文档函数在文件上传后运行(通过在 JS 中等待 Promise)
  • 使用 Firebase 存储触发器,它将在上传文件时运行函数,然后从云函数添加文档。如果您使用此方法,您可以删除用户的写入权限,以便只有云功能可以在上传该对象时添加文档。

0
投票

有规则:

service firebase.storage {
  match /b/{bucket}/o {
    match /path/to/your/file {
        allow write: if resource == null;
    }
  }
}

如果该位置已存在文件,这将拒绝上传。

© www.soinside.com 2019 - 2024. All rights reserved.