gpt4 book ai didi

java - 如何限制用户在数据库中多次写入

转载 作者:行者123 更新时间:2023-11-29 23:45:58 25 4
gpt4 key购买 nike

我正在开发一款巴士预订应用。因此,每当用户预订乘车时,我都会为该特定乘车存储他的凭据(姓名、电子邮件)。我需要限制该行程的预订数量(例如每次行程仅 20 个)。为此,我使用了 Firebase 事务。但是如何限制他们在一天中的特定时间多次预订。谁能告诉我怎么做?下面是我的数据库代码(mref1 是我要存储预订数量的位置)

private DatabaseReference mTime1;
private DatabaseReference mTime2;
private DatabaseReference mCount1;
private DatabaseReference mCount2;
private FirebaseAuth mAuth;
private static final String TAG = "BookingActivity";

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_booking);

mAuth = FirebaseAuth.getInstance();

Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

mDatabase1 = FirebaseDatabase.getInstance().getReference().child("Time1");
mDatabase2 = FirebaseDatabase.getInstance().getReference().child("Time2");
mref1 = FirebaseDatabase.getInstance().getReference().child("Count@Time1");
mref2 = FirebaseDatabase.getInstance().getReference().child("Count@Time2");

findViewById(R.id.button1).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Book(mDatabase1,mref1);
}
});

findViewById(R.id.button2).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Book(mDatabase2,mref2);
}
});

}


public void Book(DatabaseReference mDatabase,DatabaseReference mref) {

final FirebaseUser user = mAuth.getCurrentUser();
HashMap<String,String>datamap = new HashMap<>();
Long tsLong = System.currentTimeMillis()/1000;
String ts = tsLong.toString();

if(user!=null) {
datamap.put("Name", user.getDisplayName());
datamap.put("Email", user.getEmail());
datamap.put("Timestamp",ts);
}

mDatabase.push().setValue(datamap);
Update(mref);
Toast.makeText(BookingActivity.this, "Booked Successfully", Toast.LENGTH_SHORT).show();

}

public void Update(DatabaseReference mDatabase) {

mDatabase.runTransaction(new Transaction.Handler() {
@NonNull
@Override
public Transaction.Result doTransaction(@NonNull MutableData mutableData) {

Integer CurrentValue = mutableData.getValue(Integer.class);
mutableData.setValue(CurrentValue+1);
return Transaction.success(mutableData);
}

@Override
public void onComplete(@Nullable DatabaseError databaseError, boolean b, @Nullable DataSnapshot dataSnapshot) {

Log.d(TAG, "Updating count transaction is completed.");
}
});
}

我的数据库结构是enter image description here

最佳答案

要解决这个问题,您应该创建另一个名为 users 的节点,您应该在其中添加用户对象。每个用户对象都应该有一个名为 numberOfRides 的属性,默认值为 0(零)。第一次骑行后,将该数字增加到 1(一次),每次用户想要再次骑行时,检查此属性的值。如果是 0 让用户搭车,否则限制他搭车。然后,我建议你在Cloud Functions for Firebase中写一个函数可以将每个用户的 numberOfRides 属性的值设置为 0(零)。最后只需设置一个 cron job在午夜之前调用此函数。就是这样!

关于java - 如何限制用户在数据库中多次写入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51402277/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com