首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在onChildAdded触发器之后,没有数据插入到firebase

在onChildAdded触发器之后,没有数据插入到firebase
EN

Stack Overflow用户
提问于 2018-08-23 17:26:46
回答 1查看 56关注 0票数 0

我在我的应用程序中使用firebase将图像发布到firebase storage,还将一些数据发送到我在firebase中的实时数据库。问题是图像上传成功,但是通过触发onChildAdded()事件并为添加的子数据干杯,没有插入数据!

下面是我的java代码:

代码语言:javascript
运行
复制
public void postImage(View view){
    final ProgressDialog progressDialog=new ProgressDialog(this);
    progressDialog.setMessage("Please wait while posting is getting done !");
    progressDialog.setTitle("Posting ...");
    progressDialog.show();
    progressDialog.setCancelable(false);
    progressDialog.setCanceledOnTouchOutside(false);

    final String title=imgTitle.getText().toString();
    final String desc=imgDesc.getText().toString();
    if(TextUtils.isEmpty(title)||TextUtils.isEmpty(desc)){
        Toast.makeText(this,"Please input image title and image description then try again !",Toast.LENGTH_SHORT).show();
    }
    else {
        try {
            final StorageReference filePath = storageReference.child("PostImage").child(uri.getLastPathSegment());
            filePath.putFile(uri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                DatabaseReference newPost = databaseReference.push();

                @Override
                public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                    filePath.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                        @Override
                        public void onSuccess(Uri uri) {
                            newPost.child("title").setValue(title);
                            newPost.child("desc").setValue(desc);
                            newPost.child("image").setValue(uri.toString());
                        }
                    });
                    newPost.addChildEventListener(new ChildEventListener() {
                        @Override
                        public void onChildAdded(@NonNull DataSnapshot dataSnapshot, String s) {
                            Toast.makeText(PostActivity.this, dataSnapshot.getValue().toString(), Toast.LENGTH_SHORT).show();
                        }

                        @Override
                        public void onChildChanged(DataSnapshot dataSnapshot, String s) {

                        }

                        @Override
                        public void onChildRemoved(DataSnapshot dataSnapshot) {

                        }

                        @Override
                        public void onChildMoved(DataSnapshot dataSnapshot, String s) {

                        }

                        @Override
                        public void onCancelled(DatabaseError databaseError) {

                        }
                    });

                    progressDialog.dismiss();
                    Toast.makeText(PostActivity.this, "The Image Uploaded successfully !", Toast.LENGTH_SHORT).show();
                }
            });
        }
        catch (Exception ex){
            Toast.makeText(PostActivity.this, ex.getMessage(), Toast.LENGTH_SHORT).show();
        }
    }
}

和我的firebase数据库规则:

代码语言:javascript
运行
复制
{
  "rules": {
   ".read": true,
   ".write": true
  }
}

重点是,如果我将我的android设备连接到某个代理服务器,应用程序运行正常,一切都正常!!

有什么问题吗?

EN

Stack Overflow用户

发布于 2018-08-23 17:32:33

您尚未使用DatabaseReference对象的setValue(Object obj)设置任何值。

您可以通过如下方式添加具有setValue()权限的用户:

private void writeNewUser(String userId,String name,String email) { User user =新用户(name,email);

代码语言:javascript
运行
复制
mDatabase.child("users").child(userId).setValue(user);

}

以这种方式使用setValue()会覆盖指定位置的数据,包括任何子节点。但是,您仍然可以在不重写整个对象的情况下更新子对象。如果您希望允许用户更新其配置文件,您可以按如下方式更新用户名:

代码语言:javascript
运行
复制
mDatabase.child("users").child(userId).child("username").setValue(name);

您需要像这样设置值:

代码语言:javascript
运行
复制
DatabaseReference newPost = FirebaseDatabase.getInstance().getReference();    
newPost.setValue(videoTrackBean.getPercentage())

或者,您可以像这样设置值:

代码语言:javascript
运行
复制
FirebaseDatabase.getInstance().getReference().child(SUB_CHILD_PATH).setValue(chat);

您可以从https://firebase.google.com/docs/database/android/read-and-write获取更多信息

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51982491

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档