【问题标题】:App wont push data inside Firebase应用程序不会在 Firebase 中推送数据
【发布时间】:2017-06-29 21:51:41
【问题描述】:

我正在为暑期学校开发聊天应用程序。这是我的第一个 android 应用程序,我们被告知要使用 Firebase。虽然在 Firebase 中使用内置登录非常简单,但我读到您无法访问注册用户列表,所以我试图解决这个问题。我又做了一张桌子。 用户登录后,我在表中搜索他的电子邮件,如果它不存在,他的电子邮件(用作昵称)被添加到表中。然后,我想使用表格的内容,与其他注册用户创建聊天。但是,由于某些原因,我的应用程序没有将 User 对象推送到 Firebase,因为我已经在控制台中对其进行了检查。它只是不存在。问题在哪里?代码总是进入 if 的内部。

该部分的代码,我将其发送到 Firebase。

       @Override
protected void onActivityResult(int requestCode, int resultCode,
                                Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == SIGN_IN_REQUEST_CODE) {
        if (resultCode == RESULT_OK) {
            Toast.makeText(this,
                    "Successfully signed in. Welcome!",
                    Toast.LENGTH_LONG)
                    .show();
            displayChatMessages();

            setUserInfo();

FirebaseDatabase.getInstance().getReference("server/users").equalTo(FirebaseAuth.getInstance().getCurrentUser().getEmail().toString()).addListenerForSingleValueEvent(
                        new ValueEventListener() {
                            @Override
                            public void onDataChange(DataSnapshot dataSnapshot) {
                                System.out.println("Am i inside?" + dataSnapshot.hasChildren());
                                if (!dataSnapshot.hasChildren()) {
                                    User user = new User(FirebaseAuth.getInstance().getCurrentUser().getEmail());
                                    FirebaseDatabase.getInstance().getReference("server/users").push().setValue(user);
                                    System.out.println("I am at the end.  " + FirebaseAuth.getInstance().getCurrentUser().getDisplayName() + " " + FirebaseDatabase.getInstance().getReference("server/users").toString());
                                }
                            }

                            @Override
                            public void onCancelled(DatabaseError databaseError) {
                                System.out.println("ERROR: " + databaseError.toString());
                            }
                        }
                );

            } else {
                Toast.makeText(this,
                        "We couldn't sign you in. Please try again later.",
                        Toast.LENGTH_LONG)
                        .show();

                // Close the app
                finish();
            }
        }
}

我的用户类:

public class User {
    private String nickName;
    public User(){}
    public User(String nickName){
    }
    public String getNickName(){
        return nickName;
    }
    public void setNickName(String nickName){
        this.nickName=nickName;
    }
}

使用此代码,我想从 firebase 中找回用户:

FirebaseDatabase.getInstance().getReference("server/users").addValueEventListener(new ValueEventListener() {
                    @Override
                    public void onDataChange(DataSnapshot dataSnapshot) {
                        for (DataSnapshot userSnapshot : dataSnapshot.getChildren()) {
                            User user = userSnapshot.getValue(User.class);
                            if (user.getNickName() != FirebaseAuth.getInstance().getCurrentUser().getEmail())
                                users.add(user);
                        }
                    }

                    @Override
                    public void onCancelled(DatabaseError databaseError) {

                    }
                });

谢谢:)

【问题讨论】:

  • 您能否提供 Firebase 上的数据层次结构,或者如果您通过代码添加用户,您也可以向我们提供这部分内容。

标签: android firebase firebase-realtime-database


【解决方案1】:

您可以尝试在数据库中显式创建“用户”节点,然后存储 该节点的所有新用户。 FirebaseDatabase.getInstance().getReference().child("Users").haschild(email); 如果没有,请检查用户节点是否有此电子邮件... FirebaseDatabase.getInstance().getReference().child("Users").child(email).setValue(new user()); 您可以根据需要收听用户节点。

【讨论】:

    猜你喜欢
    • 2018-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-26
    • 1970-01-01
    相关资源
    最近更新 更多