嗨,大家好我正在学习android编程,我使用firebase我想删除每天用户数据和谁有高分我想复制他的数据另一个孩子 这是我的数据库
project-12345
/usersscore
/user1 {
uid:user1
timestamp:121121212
score:125
}
/user2{
uid:user2
timestamp:121121212
score:50
}
每天低分删除和高分用户数据复制赢家孩子`
project-12345
/winner
/user1 {
uid:user1
timestamp:121121212
score:125
我怎么能这样做对不起我的坏英语node.js的每个教程都是另一种语言,我不明白请帮帮我谢谢。
答案 0 :(得分:0)
Firebase是一个相当活跃的数据库,因为它具有创建/更新/删除数据的触发器,但对计划任务和主动操作没有太多帮助。
您可能希望查看某种类型的作业,例如计划的CRON作业,并根据需要操作数据库,我知道GCP支持这一点,Firebase和GCP沟通得很好。您还可以根据auth规则设置一个具有管理员访问权限的单独项目,并使用一个按钮来执行此操作,而不是自动化但是一个解决方案。
除此之外,您可以根据时间戳查询数据,然后获胜者根据时间戳分隔数据,找出最高分,并在最有可能获取所有数据后显示它。 / p>
答案 1 :(得分:0)
试试这个。首先是查询最高分,然后获取数据并更新您的获胜者参考
DatabaseReference mDatabasePlayers = FirebaseDatabase.getInstance().getReference().child("usersscore");
Query mDatabaseHighestPlayer = mDatabasePlayers.orderByChild("score").limitToLast(1);
mDatabaseHighestPlayer.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot){
for (DataSnapshot childSnapshot: dataSnapshot.getChildren()) {
Player highScore = dataSnapshot.getValue(Player.class);
FirebaseDatabase.getInstance().getReference().child("winner").setValue(highScore);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
throw databaseError.toException(); // don't swallow errors
}
});
希望这有帮助
编辑: 要在特定时间每天运行,您必须使用计划程序。下面是一个使用AlarmManager的例子
alarmMgr = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, AlarmReceiver.class);
alarmIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
// Set the alarm to start at 6:30 PM
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, 6);
calendar.set(Calendar.MINUTE, 30);
// setRepeating() lets you specify a precise custom interval--in this case,
// 1 day
alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
AlarmManager.INTERVAL_DAY, alarmIntent);
然后在我的样本
中的AlarmReceiver
广播接收器上执行上述代码
@Override
public void onReceive(Context context, Intent intent) {
//do function here
}