Пути к базе данных Firebase не должны содержать '.', '#', '$', '[' Или ']' Android Studio - PullRequest
0 голосов
/ 08 января 2020

Я использую Android Studio и базу данных реального времени Firebase и пытаюсь добавить прослушиватель события value к одному из созданных мной узлов. Код выглядит следующим образом:

DatabaseReference rdb = FirebaseDatabase.getInstance().getReference();
rdb.child(Constants.JOBS_COLLECTION).child(AppData.getInstance().getJobDocRef())
                .addValueEventListener(new ValueEventListener() {
                          //my code here
}

Константы. java имеет это public static final String JOBS_COLLECTION = "jobs"; AppData. java является синглтоном, а getJobDocRef () возвращает ссылку на созданный мной узел. Вот как я сохранил ссылку:

AppData.getInstance().setJobDocRef(newDoc.toString());

Когда этот код запускается, я получаю следующее исключение:

com.google.firebase.database.DatabaseException: Invalid Firebase Database path: https://myproject-77d.firebaseio.com/jobs/-Ly3GYAaKy-gmVwJqajO. Firebase Database paths must not contain '.', '#', '$', '[', or ']'
        at com.google.firebase.database.core.utilities.Validation.validatePathString(com.google.firebase:firebase-database@@19.2.0:45)
        at com.google.firebase.database.DatabaseReference.child(com.google.firebase:firebase-database@@19.2.0:102)
        at com.bleek.App.FindDriverFragment.getDriver(FindDriverFragment.java:82)
        at com.bleek.App.FindDriverFragment.onCreateView(FindDriverFragment.java:57)
        at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2600)
        at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:881)
        at androidx.fragment.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManagerImpl.java:1238)
        at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:1303)
        at androidx.fragment.app.BackStackRecord.executeOps(BackStackRecord.java:439)
        at androidx.fragment.app.FragmentManagerImpl.executeOps(FragmentManagerImpl.java:2079)
        at androidx.fragment.app.FragmentManagerImpl.executeOpsTogether(FragmentManagerImpl.java:1869)
        at androidx.fragment.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManagerImpl.java:1824)
        at androidx.fragment.app.FragmentManagerImpl.execPendingActions(FragmentManagerImpl.java:1727)
        at androidx.fragment.app.FragmentManagerImpl$2.run(FragmentManagerImpl.java:150)
        at android.os.Handler.handleCallback(Handler.java:873)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6669)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
I/Process: Sending signal. PID: 5719 SIG: 9
Process 5719 terminated.

Вот структура моей базы данных:

myproject-77d
    jobs
        -Ly3GYAaKy-gmVwJqajO
        -Ly3GHeQVxuqhXD4fFDG

Пожалуйста, помогите мне решить эту ошибку

1 Ответ

0 голосов
/ 08 января 2020

Google помог мне исправить эту ошибку, в случае, если у кого-то еще может быть эта проблема, я поделюсь решением здесь.

При сохранении ссылки на узел, которую я использовал newDoc.toString(), это то, что вызывает ошибку, я следует использовать newDoc.getKey()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...