【发布时间】:2021-03-26 02:25:18
【问题描述】:
我正在尝试检查一个孩子是否已经有一个值,如果没有,则增加一个孩子值并在孩子内部添加一个数据数组。例如:
并期望代码将添加第二个孩子“2”:
为此,我使用 doTransaction 检查 history/userId 值中是否有任何值,
Date c = Calendar.getInstance().getTime();
SimpleDateFormat df = new SimpleDateFormat("dd-MMM-yyyy", Locale.getDefault());
String formattedDate = df.format(c);
PlanHistory planHistory = new PlanHistory(formattedDate, plan.getPlan_key(), plan.getPlan_name(), plan.getLevel_name(), plan.getType_name(), plan.getPersonal_trainer_id(), plan.getUri());
mDatabase.child("history").child(user.getUid()).runTransaction(new Transaction.Handler() {
@NonNull
@Override
public Transaction.Result doTransaction(@NonNull MutableData mutableData) {
long value = 0;
if(mutableData.getValue() != null) {
String numQuestions = (String) mutableData.getValue();
value = Long.parseLong(numQuestions, 16);
}
value++;
String incHex = Long.toHexString(value);
mutableData.setValue(incHex);
mutableData.child(incHex).setValue(planHistory);
return Transaction.success(mutableData);
}
@Override
public void onComplete(@Nullable DatabaseError error, boolean committed, @Nullable DataSnapshot currentData) {
}
});
问题出在子节点内部已经有值时,它返回ArrayList并且不能强制转换为String
如何修复代码,以便它可以添加下一个节点,其子名称从前一个节点增加,就像预期的结果一样?
【问题讨论】:
标签: java firebase android-studio firebase-realtime-database