android - 更新 Firebase 实时数据库值的问题
问题描述
我试图在 Firebase 实时数据库上推送一些数据,但我面临的问题是它在上传图像后没有更新图像属性值(图像的默认值为 defaultimg)。新节点没有更新值,而是添加了 image 的值。
下面是代码。
private void postAd(final String title,final String description,final String category,final
String price) {
FirebaseUser currentUser = FirebaseAuth.getInstance().getCurrentUser();
String uid = currentUser.getUid();
mDatabase = FirebaseDatabase.getInstance().getReference().child("AdvertData");
HashMap<String,String> userMap = new HashMap<>();
userMap.put("title", title);
userMap.put("description",description);
userMap.put("category",category);
userMap.put("image","defaultimg");
userMap.put("price",price);
mDatabase.push().setValue(userMap).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if(task.isSuccessful()){
mProgess.hide();
Toast.makeText(getView().getContext(),"Data Uploaded Successfully",Toast
.LENGTH_SHORT).show();
mTitle.getEditText().setText(null);
mDescription.getEditText().setText(null);
mPrice.getEditText().setText(null);
mCategory.setText("Category");
}else{
Toast.makeText(getView().getContext(),"Data Uploaded Unuccessfully",Toast
.LENGTH_SHORT).show();
}
以上代码部分用于将数据上传到数据库
下面将用于 onActivityResult 方法来更新孩子中的图像。
mImageStorage.child("ad_images").child(current_user_id+".jpg")
.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
String downloadUrl = uri.toString();
mUserRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference adRef = mUserRef.child("AdvertData");
String key = adRef.push().getKey();
if (key != null) {
adRef.child(key).child("image").setValue(downloadUrl)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()){
mProgess.dismiss();
Toast.makeText(getActivity(), "Ad picture uploaded completely.", Toast.LENGTH_SHORT).show();
}
}
});
}
解决方案
好的,在应用程序上工作了 6 个小时后,我得出了一个解决方案,而不是从 firebase 获取随机生成的密钥来更新图像的值。每次将用户数据上传到 Firebase 时,我都会上传图像。所以简而言之,我没有在相机活动的 OnActivityResult 中更新图像,而是在数据上传到实时数据库时上传了图像。
推荐阅读
- angular5 - 使用 http.post 时如何从 HTTP 响应中获取标头
- java - JavaFX - 在循环中绘制(蛇)
- javascript - socket.io 中的聊天示例在 phonegap 中不起作用。我一直有这个错误
- angularjs - 范围不向 html 发送数据
- css - Woocommerce 中的迷你购物车按钮对齐错误?
- java - 当 ArrayList 都是通用类型时,为什么我无法通过 addAll 方法将 ArrayList 的内容添加到另一个 ArrayList 中?
- javascript - Google Maps API 当前位置的应用程序以初始地图居中并在我的应用程序中用作 Origin,Destination 到单击地图的位置
- powershell - 从 SQL Server 获取查询结果并使用命令提示符执行命令
- java - 读取 ArrayStack 不清空,此方法无效
- javascript - 将javascript函数调用转换为打字稿函数