![](/img/trans.png)
[英]Deleting a single child under user id, randomly generated childname, android studio, firebase
[英]Store a date&time into Firebase under a User child in Android studio?
这是我的 Firebase 结构:
我想在每个用户的第二个名称下方的“预订”下存储一个日期和时间,然后选择日期和时间。
这是我到目前为止以错误的方式工作的内容。 它在名为“ MyBookings ”的单独子节点下设置日期
基本上我正在做的是单击显示日期和时间选择器的 EditText,我需要将该日期存储在 Firebase 实时数据库中。
private void showDateTimeDialog(final EditText date_time_in) {
final Calendar calendar=Calendar.getInstance();
DatePickerDialog.OnDateSetListener dateSetListener=new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
calendar.set(Calendar.YEAR,year);
calendar.set(Calendar.MONTH,month+1);
calendar.set(Calendar.DAY_OF_MONTH,dayOfMonth);
TimePickerDialog.OnTimeSetListener timeSetListener=new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
calendar.set(Calendar.HOUR_OF_DAY,hourOfDay);
calendar.set(Calendar.MINUTE,minute);
SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yy-MM-dd HH:mm");
date_time_in.setText(simpleDateFormat.format(calendar.getTime()));
Bookings booking = new Bookings(year,month,dayOfMonth,hourOfDay,minute);
rootDatabaseRef.setValue(booking);
}
};
new TimePickerDialog(BookingActivity.this,timeSetListener,calendar.get(Calendar.HOUR_OF_DAY),calendar.get(Calendar.MINUTE),false).show();
}
};
new DatePickerDialog(BookingActivity.this,dateSetListener,calendar.get(Calendar.YEAR),calendar.get(Calendar.MONTH),calendar.get(Calendar.DAY_OF_MONTH)).show();
}
这是我的 Firebase 参考资料,我知道它是错误的,但不知道如何写它是正确的。
DatabaseReference rootDatabaseRef;
rootDatabaseRef = FirebaseDatabase.getInstance().getReference().child("MyBookings");
这是我的 POJO 预订 class。
public int year,month,dayOfMonth,hourOfDay,minute;
public Bookings(){
}
public Bookings(int year, int month, int dayOfMonth, int hourOfDay, int minute) {
this.year = year;
this.month = month;
this.dayOfMonth = dayOfMonth;
this.hourOfDay = hourOfDay;
this.minute = minute;
}
public int getYear() {
return year;
}
public void setYear(int year) {
this.year = year;
}
public int getMonth() {
return month;
}
public void setMonth(int month) {
this.month = month;
}
public int getDayOfMonth() {
return dayOfMonth;
}
public void setDayOfMonth(int dayOfMonth) {
this.dayOfMonth = dayOfMonth;
}
public int getHourOfDay() {
return hourOfDay;
}
public void setHourOfDay(int hourOfDay) {
this.hourOfDay = hourOfDay;
}
public int getMinute() {
return minute;
}
public void setMinute(int minute) {
this.minute = minute;
}
} ```
setValue() 方法的当前结果。
MyBookings
dayOfMonth:
6
hourOfDay:
13
minute:
49
month:
0
year:
2022
如何在 Firebase 中的用户(仅当前登录用户)下正确存储日期+时间?
改变这个:
DatabaseReference rootDatabaseRef;
rootDatabaseRef = FirebaseDatabase.getInstance().getReference().child("MyBookings");
对此:
DatabaseReference rootDatabaseRef;
rootDatabaseRef = FirebaseDatabase.getInstance().getReference().child("MyBookings").child(username).child("Bookings");
其中username是包含当前用户的用户名的字符串。
改进:为预订保留一个计数器.. 让我们说nBooks现在,像这样进行引用...child(username).child("Booking"+ nBooks )
您正在使用FirebaseDatabase.getInstance().getReference().child("MyBookings").child(username);
初始化rootDatabseRef
但是如果你想在你的 UID 的单独节点下添加它,你需要以这种方式初始化
String username = ""/*This where you set you currently logged user's did*/;
DatabaseReference rootDatabaseRef;
rootDatabaseRef = FirebaseDatabase.getInstance().getReference().child("MyBookings").child(username).child(UUID.randomUUID().toString());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.