我在数据库中有一个图像,它有一个预定义的路径。我将使用Datasnapshot进行查询并查看路径是否是我确定的路径,然后继续执行下一步,该步骤将负责保存新照片而不删除旧照片,这是默认图像并保留在Firebase存储中。如果它不是预期的URL,则是,执行删除firebase映像的过程。
目前您忽略了我的查询,并且已经进入下一步删除图像。如何检查此URL以及是否没有任务?
代码:
*fotoEmpresaDB = FirebaseDatabase.getInstance().getReference().child("Empresas").child(user_id).child("foto_capa");*/
fotoEmpresaDB.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if ( dataSnapshot.equals("https://firebasestorage.googleapis.com/v0/b/name-database/Default%2Fprofiledefault.jpg?alt=media&token=ad1ce6b7-1195-40fa-a88a-affade7517b0") ){
/*Method that saves image without deleting the previous image*/
salvarDadosImagem();
} else {
mProgress.setMessage("Deleting image....");
mProgress.show();
mProgress.setCancelable(false);
String url = dataSnapshot.getValue(String.class);
mStorageUrl = FirebaseStorage.getInstance().getReferenceFromUrl(url);
mStorageUrl.delete().addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
salvarDadosImagem();
}
我尝试过:datasnapshot.hashChild(&#34; URL&#34;)。
发生以下错误:Firebase数据库路径无效:Firebase数据库路径不得包含&#39;。&#39;,&#39;#&#39;,&#39; $&#39;,&# 39; [&#39;,或&#39;]&#39;
答案 0 :(得分:1)
我不确定我是否理解你要做的事情,但这里有两个最有可能的答案。
检测该值是否与您正在寻找的dataSnapshot.getValue(String.class).equals("https://REST_OF_YOUR_URL")
匹配
检测节点是否有任何值(如果存在):dataSnapshot.exists()
答案 1 :(得分:0)
解决方案:
fotoEmpresaDB.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String url = dataSnapshot.getValue(String.class);
if ( url.contentEquals("https: URL") ){
/*Method that saves image without deleting the previous image*/
salvarDadosImagem();
} else {