Firebase:使用元数据来排序使用list()时显示哪些文件

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

我正在将音频文件(作为Blob)上传到Firebase,并且每个文件都具有附加的元数据。元数据包含已审核的自定义值,该值可以为true或false。我想使用list()firebase函数显示上述文件,但我只希望显示已审阅过的文件:false。我该怎么办?

根据我的阅读,您可以对child()中的值进行排序/操作,但是我不完全了解该怎么做;除了使用元数据,还可以向孩子添加reviewed:false部分吗?据我所知,这是音频文件,因此无法完成。我还没有任何代码可以显示,因为我不知道从哪里开始,我们将不胜感激!

javascript firebase metadata firebase-storage
1个回答
0
投票

用于云存储的Firebase SDK仅可以基于路径前缀进行过滤,因此文件位于哪个“目录”中。没有用于过滤元数据的选项。

这意味着您当前有一些选择:

  1. 读取所有过滤器和过滤器客户端。不过,我怀疑它是否是一个可行的选择,因为您可能最终会下载很多数据,而这些数据然后便不会在客户端中使用。
  2. 将未审阅的文件存储在其他路径中,以便您可以按路径前缀列出它们。例如,如果将未查看的文件存储在目录/文件夹/位置unreviewed中,则可以通过firebase.storage().ref().child('unreviewed').list()...

    仅获取未查看的文件。

    这意味着您必须在查看文件后将其移动到其他位置。由于移动文件不是Firebase API中的一项操作,因此您要么必须重新上传文件(这也允许您更新元数据),要么使用Cloud /服务器端API来移动文件。 >

  3. 将有关文件审阅状态的元数据存储在另一个位置,例如Firebase实时数据库或Cloud Firestore。到目前为止,这是最常见的方法,因为您通常可以使用Cloud Storage纯粹用于二进制数据的读取和写入,从而更轻松地存储,更新和查询有关此数据库中文件的元数据。

  4. 另请参见我之前提供的answer中的“上一个答案”段落。

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