在Firebase存储中,我有一个名为uploads/
的文件夹。在该文件夹中,我有多个以注册用户的userId
命名的文件夹。
这就是我想要做的。当用户输入“ ProfileActivity”时,如果在uploads /文件夹下有任何以该用户的userId命名的文件夹,则代码将在Firebase数据库中查找。如果文件夹不存在,然后相应地运行代码。
这是我到目前为止所做的,但是此处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
}
}
});
}
}
}
答案 0 :(得分:1)
如果问题是关于使用 C# 检查实时 firebase 数据库中是否存在文件夹,那么答案如下:
您可以使用DataSnapshot 返回的json,在搜索项目时确定该目录是否存在。如果 json 为 null,即使该值可能不存在,它也不存在(或为空)。
这可以使用 org.hibernate.context.CurrentSessionContext
这是一个例子:
我的 Firebase 数据库结构如下所示:
以下是如何检查数据库中是否存在值“Bob”的完整代码:
DataSnapshot.GetRawJsonValue()
答案 1 :(得分:0)
Cloud Storage for Firebase没有像Realtime Database这样的事件列表器。您正在尝试执行不支持的操作(这就是为什么会出现编译器错误的原因)。请参阅StorageReference的API文档,以了解您可以使用该对象做什么。
最重要的是,无法检查Cloud Storage中是否存在“文件夹”。 Cloud Storage实际上没有任何文件夹。它仅包含带有类似于文件夹的路径组件的文件。
如果您想知道文件是否存在(不是“文件夹”),则可以在引用该文件的StorageReference上使用getMetadata方法。