我正在使用firebase存储保存图像,当我在应用程序上检索它们时,文件没有按字母顺序排序。Firebase按日期时间排序文件,第一次上传显示在第一次然后第二次。我有很多文件,不能一个接一个地上传这些文件。有没有办法按字母顺序排序文件。喜欢
001.png
002.png
003.png
004.png
005.png
...
'
private void saveAllSigns() {
showDialog();
for (int i = 0; i < SignNameList.length; i++) {
StorageReference storageReference = FirebaseStorage.getInstance().getReference().child(SignNameList[i]);
int finalI1 = i;
storageReference.listAll().addOnSuccessListener(new OnSuccessListener<ListResult>() {
@Override
public void onSuccess(ListResult listResult) {
List<StorageReference> list = listResult.getItems();
for (StorageReference str : list) {
long SIZE = 1024 * 1024;
str.getBytes(SIZE).addOnSuccessListener(new OnSuccessListener<byte[]>() {
@Override
public void onSuccess(byte[] bytes) {
saveData(bytes, str.getName(), finalI1);
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.d("SlashLog", "Firebase Exception: " + e.getMessage());
}
'
寻找解决方案
1条答案
按热度按时间67up9zun1#
由于您没有清楚地提到Firestore或实时数据库的问题所在,我假设您在实时数据库中遇到了问题。默认情况下,Firebase实时数据库不提供任何在服务器端排序数据的方法,您需要在客户端处理此问题。
如本link中所述
可以使用实时数据库查询类检索按键、值或子代值排序的数据。还可以将排序结果筛选为特定数量的结果或一定范围的键或值。
要检索已排序的数据,首先指定一个order-by方法来确定结果的排序方式:
orderByChild()-按指定子键或嵌套子路径的值对结果进行排序。
orderByKey()-按子键对结果进行排序。
orderByValue()-按子值对结果进行排序。
一次只能使用一个order-by方法。在同一查询中多次调用order-by方法会引发错误。
您还可以检查此堆栈溢出thread