Java 如何在Firebase中将数据从一个表复制到另一个表?
我有两张桌子——纸盒和餐具。CartoOrder用于将产品添加到购物车,当用户按下“下订单”按钮时,placedOrders被激活。 当用户单击“下订单”按钮时,我需要将数据从cartorder复制到placedOrders,但我无法这样做Java 如何在Firebase中将数据从一个表复制到另一个表?,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我有两张桌子——纸盒和餐具。CartoOrder用于将产品添加到购物车,当用户按下“下订单”按钮时,placedOrders被激活。 当用户单击“下订单”按钮时,我需要将数据从cartorder复制到placedOrders,但我无法这样做 cartDatabase = FirebaseDatabase.getInstance().getReference("cartOrders"); cartQuery = cartDatabase.child(orderID).orderByChild("p
cartDatabase = FirebaseDatabase.getInstance().getReference("cartOrders");
cartQuery = cartDatabase.child(orderID).orderByChild("productQuantity").startAt(1);
placedOrdersDatabase = FirebaseDatabase.getInstance().getReference("placedOrders");
placedOrderQuery = placedOrdersDatabase.child("orderID");
placeOrderButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
cartDatabase.child(orderID).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
//Logic to add data to data to placedOrders.
String name = dataSnapshot.child("productName").getValue(String.class);
System.out.println("ProductName: " + name);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
Intent intent = new Intent(getApplicationContext(), OrderPlacedActivity.class);
intent.putExtra("ORDER_ID", orderID);
startActivity(intent);
}
});
在代码中,我检查代码是否从数据库中提取数据,但事实并非如此。输出为null
。两个表具有相同的结构。
任何帮助都将不胜感激。
谢谢
我的cartOrders表结构:
cartOrders:
----------OrderID:
-----------------ProductID:
---------------------------ProductID:
---------------------------ProductName:
---------------------------ProductPrice:
---------------------------ProductQty:
@亚历克斯·马莫用另一个问题回答了这个问题
private void copyRecord(Query fromPath, final DatabaseReference toPath) {
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
toPath.setValue(dataSnapshot.getValue()).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isComplete()) {
System.out.println("Complete");
} else {
System.out.println("Failed");
}
}
});
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
};
fromPath.addListenerForSingleValueEvent(valueEventListener);
}
private void copyRecord(查询fromPath,最终数据库引用toPath){
ValueEventListener ValueEventListener=新的ValueEventListener(){
@凌驾
public void onDataChange(@NonNull DataSnapshot DataSnapshot){
setValue(dataSnapshot.getValue()).addOnCompleteListener(新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
if(task.isComplete()){
系统输出打印项次(“完成”);
}否则{
System.out.println(“失败”);
}
}
});
}
@凌驾
已取消的公共void(@NonNull DatabaseError DatabaseError){
}
};
fromPath.addListenerForSingleValueEvent(valueEventListener);
}
代码运行良好。
链接:@Alex Mamo用另一个问题回答了这个问题
private void copyRecord(Query fromPath, final DatabaseReference toPath) {
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
toPath.setValue(dataSnapshot.getValue()).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isComplete()) {
System.out.println("Complete");
} else {
System.out.println("Failed");
}
}
});
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
};
fromPath.addListenerForSingleValueEvent(valueEventListener);
}
private void copyRecord(查询fromPath,最终数据库引用toPath){
ValueEventListener ValueEventListener=新的ValueEventListener(){
@凌驾
public void onDataChange(@NonNull DataSnapshot DataSnapshot){
setValue(dataSnapshot.getValue()).addOnCompleteListener(新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
if(task.isComplete()){
系统输出打印项次(“完成”);
}否则{
System.out.println(“失败”);
}
}
});
}
@凌驾
已取消的公共void(@NonNull DatabaseError DatabaseError){
}
};
fromPath.addListenerForSingleValueEvent(valueEventListener);
}
代码运行良好。
链接:问题解决了吗?@Ticherhaz是的:)你解决问题了吗?@Ticherhaz是的:)