无法更新Firebase节点

时间:2018-05-10 05:45:34

标签: java android firebase-realtime-database hashmap android-edittext

如何使用' refKey'更新Firebase节点。在这里,我有来自' EditText'的五个字符串。我需要更新名为“感谢”的节点。使用其“重新生成密钥”#。我得到了#refKey'作为一个'字符串'参数名为' key'。以下是代码。

MainActivity.java

private void updateAppreciatedSomeone(final EditText subject, final EditText first, final EditText second, final EditText third,
                                      final EditText date1, final String key){

    FirebaseDatabase firebaseDatabase = FirebaseDatabase.getInstance();
    final DatabaseReference reference = firebaseDatabase.getReference();
    Query query = reference.child("appreciate").equalTo(key);
    query.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            DataSnapshot nodeDataSnapshot = dataSnapshot.getChildren().iterator().next();
            String key1 = nodeDataSnapshot.getKey(); //
            String path = "/" + dataSnapshot.getKey() + "/" + key1;
            HashMap<String, Object> result = new HashMap<>();               

            // to update appreciate nodeDataSnapshot

            result.put("appreciatedWhom", first.getText().toString());
            result.put("appreciatedWhy",second.getText().toString());
            result.put("appreciatedDateTime", date.getText().toString();
            result.put("appreciatedDescription",third.getText().toString());
            result.put("appreciatedSubject", subject.getText().toString());
            reference.child(path).updateChildren(result);

            Log.d("UPDATE_APPRECIATION", "APPRECIATION_UPDATED_FOR:" + result);

            Intent intent  = new Intent(MainActivity.this, NextActivity.class);
            startActivity(intent);
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {
            Log.d("UPDATE_PROFILE", ">>> Error:" + "find onCancelled:" + databaseError);

        }
    });
}

我在发生异常后运行此代码。

java.util.NoSuchElementException
        at java.util.AbstractList$SimpleListIterator.next(AbstractList.java:59)
        at com.google.firebase.database.zzb.next(Unknown Source)
        at com.threeiteam.karma.MainActivity$41.onDataChange(MainActivity.java:1357)
        at com.google.firebase.database.zzp.onDataChange(Unknown Source)
        at com.google.android.gms.internal.zzegf.zza(Unknown Source)
        at com.google.android.gms.internal.zzeia.zzbyc(Unknown Source)
        at com.google.android.gms.internal.zzeig.run(Unknown Source)
        at android.os.Handler.handleCallback(Handler.java:730)
        at android.os.Handler.dispatchMessage(Handler.java:92)
        at android.os.Looper.loop(Looper.java:176)
        at android.app.ActivityThread.main(ActivityThread.java:5493)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:525)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1225)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1041)
        at dalvik.system.NativeStart.main(Native Method)

但是这段代码正在用于更新用户节点&#39;使用以下代码。

Query query = reference.child("user").orderByChild("email").equalTo(FirebaseAuth.getInstance().getCurrentUser().getEmail());

0 个答案:

没有答案