应用程序不会在Firebase中推送数据

时间:2017-06-29 21:51:42

标签: android firebase firebase-realtime-database

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

的内部

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

/*
 * Get current error_reporting value,
 * so that we don't lose preferences set in php.ini and .htaccess
 * and accidently reenable message types disabled in those.
 *
 * If you want to disable e.g. E_STRICT on a global level,
 * use php.ini (or .htaccess for folder-level)
 */
$old_error_reporting = error_reporting();

/*
 * Disable E_STRICT on top of current error_reporting.
 *
 * Note: do NOT use ^ for disabling error message types,
 * as ^ will re-ENABLE the message type if it happens to be disabled already!
 */
error_reporting($old_error_reporting & ~E_STRICT);


// code that should not emit E_STRICT messages goes here


/*
 * Optional, depending on if/what code comes after.
 * Restore old settings.
 */
error_reporting($old_error_reporting);

我的用户类:

       @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();
            }
        }
}

使用此代码,我想让用户从firebase返回:

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;
    }
}

谢谢:)

1 个答案:

答案 0 :(得分:0)

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