【问题标题】:Check if a folder exists of a certain name in Firebase storage检查 Firebase 存储中是否存在某个名称的文件夹
【发布时间】:2018-09-02 14:41:22
【问题描述】:

在 Firebase 存储中,我有一个名为 uploads/ 的文件夹。在该文件夹中,我有多个以注册用户的userIds 命名的文件夹。

这就是我想要做的。当用户输入“ProfileActivity”时,代码会在 Firebase 数据库中查找 uploads/ 文件夹下是否有任何以该用户的 userId 命名的文件夹。如果文件夹存在与否,然后相应地运行代码。

这是我到目前为止所做的,但这里addValueEventListener 没有解决。我做对了吗?我在这里缺少什么?

public class ProfileActivity extends AppCompatActivity {

    private FirebaseAuth mAuth;
    private StorageReference mStorageRef;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_profile);

        mAuth = FirebaseAuth.getInstance();
        mStorageRef = FirebaseStorage.getInstance().getReference("uploads");
    }


    @Override
    protected void onStart() {
        super.onStart();
        FirebaseUser user = mAuth.getCurrentUser();
        String userID = user.getUid();
        if (user.isEmailVerified()) {
            StorageReference userFolder = mStorageRef.child(userID);
            userFolder.addValueEventListener(new ValueEventListener() {
                @Override
                void onDataChange(DataSnapshot snapshot) {
                    if (snapshot.exists()) {
                        // run some code
                    } else {
                        //Code
                    }
                }
            });

        }
    }
}

【问题讨论】:

    标签: android firebase firebase-storage


    【解决方案1】:

    Cloud Storage for Firebase 没有像实时数据库这样的事件监听器。您正在尝试做一些不受支持的事情(这就是您遇到编译器错误的原因)。请参阅StorageReference 的 API 文档,了解您可以使用该对象做什么。

    除此之外,无法检查 Cloud Storage 中是否存在“文件夹”。 Cloud Storage 实际上没有任何文件夹。它只是具有看起来像文件夹的路径组件的文件。

    如果您想知道文件是否存在(不是“文件夹”),则可以在引用该文件的 StorageReference 上使用 getMetadata 方法。

    【讨论】:

      【解决方案2】:

      如果问题是关于使用 C# 检查实时 firebase 数据库中是否存在文件夹,那么答案如下:

      你可以使用DataSnapshot返回的json,在搜索一个item的时候,判断目录是否存在。如果 json 为 null,即使该值可能不是,它也不存在(或为空)。 这可以使用DataSnapshot.GetRawJsonValue()来完成

      这是一个例子:

      我的 Firebase 数据库结构如下所示:

      • 用户
        • 鲍勃
          • 姓名:“鲍勃”
          • 年龄:24

      以下是如何检查数据库中是否存在值“Bob”的完整代码:

          string jsonConfig = "Text from the google-services.json file you get from the database";
          AppOptions settings = AppOptions.LoadFromJsonConfig(jsonConfig);
          app = FirebaseApp.Create(settings);
      
          FirebaseDatabase database = FirebaseDatabase.GetInstance(app);
      
          // Gets the folder 'Users'
          database.GetReference("Users")
              // Gets the child called 'Bob' (whether it exists or not)
              .Child("Bob").GetValueAsync().ContinueWith(task =>
              {
                  if (task.IsCompleted)
                  {
                      if (task.Result.GetRawJsonValue() == null)
                      {
                          // 'Bob' doesn't exist
                      }
                      else
                      {
                          // 'Bob' exists
                      }
                  }
              });
      

      【讨论】:

        猜你喜欢
        • 2015-11-19
        • 2016-11-12
        • 2018-10-31
        • 2020-07-01
        • 1970-01-01
        • 2021-02-26
        • 2016-10-11
        • 2022-01-24
        • 1970-01-01
        相关资源
        最近更新 更多