如何在Firebase数据库中添加几个相同的子数据库



我有一款手机游戏,它有几个赚钱系统(交易或通过促销墙)。

玩家可以选择3种"金币";,因此很明显,如果他们有必要数量的棋子,他们可以多次请求相同的包。

但是我的代码有一个问题:

public void mediumPack(String emailMP) {

Date date = Calendar.getInstance().getTime();
SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy", Locale.ENGLISH);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
Date previousDate = calendar.getTime();
String dateString = dateFormat.format(previousDate);

HashMap<String, Object> map = new HashMap<>();
map.put("amount", 5000);
map.put("email", emailMP);
map.put("date", dateString);
map.put("status", MPStatus);

DatabaseReference referenceMP = FirebaseDatabase.getInstance().getReference().child("demandMP").child(user.getUid());

referenceMP.child("Medium Pack")
.setValue(map)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Toast.makeText(MediumPackActivity.this, "Success", Toast.LENGTH_SHORT).show();

finish();
} else {
Toast.makeText(MediumPackActivity.this, "Error: " + task.getException().getMessage(), Toast.LENGTH_SHORT).show();
}
}
});
}
getMP.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {

String emailMP = emailMediumPack.getText().toString();

if (TextUtils.isEmpty(emailMP)) {

emailMediumPack.setError("Invalid put mail");
return;
}

mediumPack(emailMP);
}
});

所以孩子"要求"和uid在创建帐户时已经创建。

在uid中,我想添加referenceMP,一切都有效,但问题是,在尝试了几次之后,可以创建一个单独的引用(如果我使用另一个电子邮件地址,它只会修改"Medium Pack">

中的电子邮件是否有办法创建多个引用?

否则,我想创建一张随机票,而不是名称"Medium Pack"考虑到这种可能性,有人可以告诉我如何创建一个看起来像这样的随机票:

MP-XX...(18 chars)-5000

如果您想在每次代码运行时在Medium Pack下生成唯一的子节点,那么像这样调用push():

DatabaseReference referenceMP = FirebaseDatabase.getInstance().getReference().child("demandMP").child(user.getUid());
referenceMP.child("Medium Pack")
.push() // 👈
.setValue(map)
...

每次调用push()时,Firebase将生成一个新的唯一ID,然后您可以使用它来设置值。

相关内容

最新更新