对于我的数据库,我正在保存一个ArrayList项目。但是,有时Firebase不会将ArrayList写入其中。我尝试通过为我的应用选择相同的项目来重现它,但发现有时它无法编写。这是一个例子:
我使用以下内容写信给Firebase:
final Order newOrder = new Order(
user_name,
user_phone,
user_email,
user_address,
Cart.items,
Cart.totalPrice,
paymentType,
orderID
);
final DatabaseReference user_ref = database.getReference("User/" + CurrentUser.getPhoneNumber());
user_ref.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
ArrayList<Order> previousOrders = new ArrayList<Order>();
// Get all previous orders to write
if(dataSnapshot.child("previous_orders").exists()) {
for(DataSnapshot snapshot : dataSnapshot.child("previous_orders").getChildren()) {
Order order = snapshot.getValue(Order.class);
previousOrders.add(order);
}
}
// Inserted Check Here and found that my order.items was empty
if(newOrder.getItems().isEmpty()) {
System.out.println("Empty");
}
previousOrders.add(newOrder);
user_ref.child("previous_orders").setValue(previousOrders);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
主要问题是,即使以相同的步骤选择了相同的项目,有时我的Items ArrayList仍未写入Firebase,而其他所有内容仍然写入。我发现有时我通过的命令说没有物品,但是退出Firebase Listener时,它又有物品。