首页 > 解决方案 > 没有得到正确的 Firebase 字符串 Android

问题描述

我正在尝试从嵌套集合中获取字符串引用,但它会生成一个随机字符串,我不明白为什么,因为我将它设置在另一个类中并且它可以正常工作(但这是顶级集合。

我保存如下:

        String folderFirebaseString; 

-----------------------
folderFirebaseString = collectionReference.document("User_" + JournalApi.getInstance().getUserId()).collection("Created_Folders").document().getId();

final FolderJournal folderJournal = new FolderJournal();
            folderJournal.setTitle(title);
            folderJournal.setUserId(currentUserId);
            folderJournal.setFolderId(folderFirebaseString);

        Log.d(TAG, "folderFireBaseString: " + folderFirebaseString);



        //Collection Reference --> Journal <-- document --> unique userID + username entered at registration <-- Collection for Titles --> titleTextView
        db.collection("Journal").document("User_" + JournalApi.getInstance().getUserId()).collection("Created_Folders").document().set(folderJournal).addOnSuccessListener(new OnSuccessListener<Void>() {
            public void onSuccess(Void aVoid) {

                Log.d(TAG, "onSuccess FULL PATH: "+ db.collection("Journal").document("User_" + JournalApi.getInstance().getUserId()).collection("Created_Folders").document().getId());

                progressBar.setVisibility(View.INVISIBLE);
                Intent intent = new Intent(FolderCreation.this, FoldersActivity.class);
                startActivity(intent);
                finish();
            }

        })

folderFirebaseString返回一个随机字符串,就像LogD我设置的返回一个不同的随机字符串一样,但是db.collection...firebase中的(等等......)随机生成的字符串实际上是别的东西。

在另一个类中,我进行了此设置,但正如它一样collectionReference = db.collection("CollectionNameHere").getDocument().getId();,它可以工作并获得正确的字符串。我究竟做错了什么?

标签: javaandroidfirebasegoogle-cloud-firestore

解决方案


我设法通过预先生成一个firebase字符串然后将它传递给它自己来解决这个问题。

       String folderFirebaseString; 

-----------------------
folderFirebaseString = collectionReference.document("User_" + JournalApi.getInstance().getUserId()).collection("Created_Folders").document().getId();

final FolderJournal folderJournal = new FolderJournal();
            folderJournal.setTitle(title);
            folderJournal.setUserId(currentUserId);
            folderJournal.setFolderId(folderFirebaseString);

        //Collection Reference --> Journal <-- document --> unique userID + username entered at registration <-- Collection for Titles --> titleTextView
        db.collection("Journal").document("User_" + JournalApi.getInstance().getUserId()).collection("Created_Folders").document(**folderFirebaseString**).set(folderJournal).addOnSuccessListener(new OnSuccessListener<Void>() {
            public void onSuccess(Void aVoid) {

                Log.d(TAG, "onSuccess FULL PATH: "+ db.collection("Journal").document("User_" + JournalApi.getInstance().getUserId()).collection("Created_Folders").document(*###folderFirebaseString###*).getId());

                progressBar.setVisibility(View.INVISIBLE);
                Intent intent = new Intent(FolderCreation.this, FoldersActivity.class);
                startActivity(intent);
                finish();
            }

        })

推荐阅读