我想在Firebase数据库的Orders表上存储特定用户的许多订单。例如,如果用户从卖方1购买商品,他将进行结帐,然后他还将从卖方2购买商品并进行结帐。在这种情况下,用户将在“订单”表上拥有两个订单。
但是对于我而言,每次我尝试订购第二个物料时,它只是通过删除先前的订单并存储新的订单来更新数据库。
以下是我的结帐。我该如何解决?
private void confirmOrder() {
final String saveCurrentDate, saveCurrentTime;
Calendar calForDate = Calendar.getInstance();
SimpleDateFormat currentDate = new SimpleDateFormat("MMM dd, yyyy");
saveCurrentDate = currentDate.format(calForDate.getTime());
SimpleDateFormat currentTime = new SimpleDateFormat("HH:mm:ss a");
saveCurrentTime = currentTime.format(calForDate.getTime());
final DatabaseReference ordersRef = FirebaseDatabase
.getInstance().getReference().child("Orders")
.child(Prevalent.currentOnlineUser.getEmail());
final HashMap<String, Object> ordersMap = new HashMap<>();
ordersMap.put("amount", totalAmount + "$");
ordersMap.put("quantity", pQuantity);
ordersMap.put("pname", pname);
ordersMap.put("storename", storename);
ordersMap.put("statep", statep);
ordersMap.put("fullname", fullNameEditText.getText().toString());
ordersMap.put("phone", phoneEditText.getText().toString());
ordersMap.put("city", cityEditText.getText().toString());
ordersMap.put("street", streetEditText.getText().toString());
ordersMap.put("house", houseEditText.getText().toString());
ordersMap.put("note", noteEditText.getText().toString());
ordersMap.put("state", "not shipped");
ordersMap.put("time", saveCurrentTime);
ordersMap.put("date", saveCurrentDate);
ordersRef.updateChildren(ordersMap).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
FirebaseDatabase.getInstance().getReference().child("Cart List")
.child("User view").child(Prevalent.currentOnlineUser.getEmail())
.removeValue().addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Toast.makeText(CheckoutActivity.this, "Order Complete", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(CheckoutActivity.this, HomeActivity.class);
//cleaning the cart list userView after the user has checked out the items
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
finish();
}
}
});
}
}
});
}
答案 0 :(得分:0)
现在,您正在用新订单覆盖以前的订单。如果您想保留旧订单,则需要维护清单。
针对您的情况的一种可能的解决方案是
final DatabaseReference ordersRef = FirebaseDatabase
.getInstance().getReference().child("Orders")
.child(Prevalent.currentOnlineUser.getEmail()).push();
此处的“ push()”函数创建一个具有uniqueId的子节点。
如果您想生成自己的uniqueId,则将'push()'替换为'child(newUniqueId)'。
final DatabaseReference ordersRef = FirebaseDatabase
.getInstance().getReference().child("Orders")
.child(Prevalent.currentOnlineUser.getEmail()).child(newUniqueId);
在这里,每个订单的“ newUniqueId”都必须不同。