【问题标题】:Invalid document reference. Document references must have an even number of segments, but mylist has 1无效的文档参考。文档引用必须有偶数个段,但 mylist 有 1
【发布时间】:2018-09-18 15:09:09
【问题描述】:

运行此代码时出现以下错误:

Invalid document reference. Document references must have an even number of segments

但 mylist 有 1"。

谁能帮帮我。

public class LoginActivity extends AppCompatActivity {


    TextView textNewUser, textForgotPassword;
    TextInputEditText username, password;
    Button loginBtn;


    String passwordTxtBx, usernameTxtBx;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.login);


        username = findViewById(R.id.userNameInputTxt);
        password = findViewById(R.id.passwordInputTxt);
        loginBtn = findViewById(R.id.loginBtn);

        usernameTxtBx = username.getText().toString();
        passwordTxtBx = password.getText().toString();

        final FirebaseFirestore database = FirebaseFirestore.getInstance();
        final DocumentReference usernameDocument = database.document("mylist/" + usernameTxtBx);

        loginBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                        usernameDocument.get()
                                .addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
                                    @Override
                                    public void onComplete(@NonNull Task<DocumentSnapshot> task) {
                                        if (task.isSuccessful()){
                                            DocumentSnapshot document = task.getResult();
                                            if(document.exists()){
                                                Toast.makeText(LoginActivity.this, "User exist", Toast.LENGTH_SHORT).show();
                                            } else {
                                                Toast.makeText(LoginActivity.this, "No user", Toast.LENGTH_SHORT).show();
                                            }
                                        } else {
                                            Toast.makeText(LoginActivity.this, "Some error", Toast.LENGTH_SHORT).show();
                                        }
                                    }
                                });
            }
        });

【问题讨论】:

  • 如果你尝试打印mylist/" + usernameTxtBx,结果如何?
  • 将默认值添加到usernameTxtBx,如“0”或其他,因为空值不能是文档ID。

标签: android firebase google-cloud-firestore


【解决方案1】:

您需要通过集合中的文档 ID 来识别文档。你给了一个集合 ID“mylist”,但没有文档 ID。 usernameTxtBx 可能为空 - 这不是有效的文档 ID。

【讨论】:

  • 我的文档是“mylist/9292929292”。因此,我从用户 EditText 框接收到此文档 ID 的值。你能详细说明一下吗?从过去 5 天开始,我陷入了这个错误。
【解决方案2】:

我得到了解决方案。刚刚从 onCreate() 移动到 loginBtn 点击监听器。

            usernameTxtBx = username.getText().toString();
            final FirebaseFirestore database = FirebaseFirestore.getInstance();
            final DocumentReference usernameDocument = database.document("mylist/" + usernameTxtBx);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-24
    • 2019-04-17
    • 2018-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-26
    • 2020-04-27
    相关资源
    最近更新 更多