我正在用android开发firebase Todo应用程序(我是初学者)。我的问题是,无论用户执行了什么任务,每个任务都可以让每个用户看到。我想让每个用户只能读/写他们自己的笔记,但是到目前为止,我找到并尝试过的所有规则都使其根本没有笔记发送到数据库或不显示。 具有两个用户和两个注释的数据库:
用户创建
fAuth.createUserWithEmailAndPassword(email, password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
Toast.makeText(RegisterActivity.this, "User Created", Toast.LENGTH_SHORT).show();
startActivity(new Intent(getApplicationContext(),LoginActivity.class));
} else {
Toast.makeText(RegisterActivity.this, "Error" + task.getException().getMessage(), Toast.LENGTH_SHORT).show();
}
}
创建便笺:
(不在同一页面上)
btnSaveTask.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick (View v){
reference = FirebaseDatabase.getInstance().getReference().child("ToDoApp").child(uid);
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
//
dataSnapshot.child(udi).child("titletodo").setValue(titletodo.getText().toString());
dataSnapshot.getRef().child("titletodo").setValue(titletodo.getText().toString());
dataSnapshot.getRef().child("desctodo").setValue(desctodo.getText().toString());
dataSnapshot.getRef().child("datetodo").setValue(datetodo.getText().toString());
dataSnapshot.getRef().child("keytodo").setValue(keytodo);
Intent a = new Intent(AddTask.this, MainActivity.class);
startActivity(a);
}
@Override
public void onCancelled(DatabaseError databaseError) {
Snackbar.make(findViewById(R.id.rl), "No Data.", Snackbar.LENGTH_LONG).show();
}
});
}
});
我已经尝试过类似规则的解决方案:
"rules": {
"ToDoApp": {
"$userId": {
".read": "auth.uid == $userId",
".write": "auth.uid == $userId",
}
}
}
}
我没有数据。
我想这样做,以便每个用户只能看到,编辑和删除他们自己制作的笔记。