Firebase数据库路径不得包含'''#''$'';[';,或';]';安卓工作室

Firebase数据库路径不得包含'''#''$'';[';,或';]';安卓工作室,firebase,android-studio,firebase-realtime-database,Firebase,Android Studio,Firebase Realtime Database,我正在使用Android Studio和Firebase实时数据库,我正在尝试向我创建的一个节点添加一个值事件侦听器。代码如下所示: DatabaseReference rdb = FirebaseDatabase.getInstance().getReference(); rdb.child(Constants.JOBS_COLLECTION).child(AppData.getInstance().getJobDocRef()) .addValueEventL

我正在使用Android Studio和Firebase实时数据库,我正在尝试向我创建的一个节点添加一个值事件侦听器。代码如下所示:

DatabaseReference rdb = FirebaseDatabase.getInstance().getReference();
rdb.child(Constants.JOBS_COLLECTION).child(AppData.getInstance().getJobDocRef())
                .addValueEventListener(new ValueEventListener() {
                          //my code here
}
Constants.java具有以下
公共静态最终字符串JOBS\u COLLECTION=“JOBS”
java是一个单例,getJobDocRef()返回我创建的节点的引用。下面是我如何保存ref的:

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

请帮助我解决此错误

谷歌帮助我修复此错误,如果其他人可能有此问题,我将在此处分享解决方案


当保存我使用的节点引用时,
newDoc.toString()
这就是导致错误的原因,我应该使用
newDoc.getKey()

您只需提供Ly3GYAaKy即可-gmVwJqajO@Ashish你的意思是我应该删除连字符“-”在节点引用的开头?是的,您不需要提供-在nodeThanks@Ashish的开头,但即使我删除连字符,它也不起作用(例外保持不变)。我相信节点引用不是问题所在,因为我在编写以下代码时从数据库获得了它:DatabaseReference newDoc=rdb.child(Constants.JOBS_COLLECTION.push();