Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Firebase:使用元数据对使用列表()时显示的文件进行排序_Javascript_Firebase_Metadata_Firebase Storage - Fatal编程技术网

Javascript Firebase:使用元数据对使用列表()时显示的文件进行排序

Javascript Firebase:使用元数据对使用列表()时显示的文件进行排序,javascript,firebase,metadata,firebase-storage,Javascript,Firebase,Metadata,Firebase Storage,我正在将音频文件(作为blob)上传到firebase,每个文件都有一个附加的元数据。元数据包含一个自定义值,该值为true或false。我想使用list()firebase函数来显示上述文件,但我只想显示已审阅的文件:false。我该怎么办 从我读到的内容来看,您可以对child()中的值进行排序/操作,但我不完全了解如何进行排序/操作;不使用元数据,是否可以将revied:false部分添加到子级?据我所知,这是无法做到的,因为它是一个音频文件。 我还没有任何代码显示,因为我不知道从哪里开始

我正在将音频文件(作为blob)上传到firebase,每个文件都有一个附加的元数据。元数据包含一个自定义值,该值为true或false。我想使用list()firebase函数来显示上述文件,但我只想显示已审阅的文件:false。我该怎么办

从我读到的内容来看,您可以对child()中的值进行排序/操作,但我不完全了解如何进行排序/操作;不使用元数据,是否可以将revied:false部分添加到子级?据我所知,这是无法做到的,因为它是一个音频文件。
我还没有任何代码显示,因为我不知道从哪里开始,任何帮助将不胜感激

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

这意味着您目前有几个选择:

  • 读取所有筛选器和筛选器客户端。不过,我怀疑这是一个可行的选择,因为您可能最终下载了大量数据,而这些数据在客户端中并不使用
  • 将未查看的文件存储在其他路径中,以便您可以在路径前缀上列出它们。例如,如果将未查看的文件存储在目录/文件夹/位置
    unreview
    ,则使用
    firebase.storage().ref().child('unreview').list()…

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

  • 将有关文件审阅状态的元数据存储在其他位置,如Firebase实时数据库或Cloud Firestore。这是迄今为止最常见的方法,因为您通常可以更轻松地存储、更新和查询数据库中文件的元数据,使用云存储仅用于读取和写入二进制数据

    另请参见我之前给出的“先前答案”一段


  • 您是否可以添加一些JSON/Javascript代码来进行排序?