値が既にデータベースに存在するかどうかをチェックすることで、ユーザーは更新時に同じ番号に変更することができません。 IDFirebase Android - 値が既に存在するか確認してください
私は何時間も解決策を探していましたが、それが機能しているのを見つけることができません。
値が既にデータベースに存在するかどうかをチェックすることで、ユーザーは更新時に同じ番号に変更することができません。 IDFirebase Android - 値が既に存在するか確認してください
私は何時間も解決策を探していましたが、それが機能しているのを見つけることができません。
データ構造、索引リストを作成する前に、推奨する理由は何ですか?あなたがこのトンを持っているときidsそれは良いクエリになります。しかし、あなたがしようとしていることは、これまでの提案を補完するものだと思います。
あなたがしなければならないことは、単一のイベントリスナーを使用することです。datasnapshotがnullでない場合、値が存在します。キーはあなたが必要なIDを照会です:
DatabaseReference root = FirebaseDatabase.getInstance.getReference();
DatabaseReference reference = root.child("Test").oderByChild("ID").equalsTo(someId);
reference.addSingleValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnaphot != null) {
//This means the value exist, you could also dataSnaphot.exist()
}
}
//More auto generated code
);
クエリが複数の結果と一致する可能性があるためdataSnapshot
は、あなたのオブジェクトの束です。現在のIDが102である場合
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnaphot != null) {
for (DataSnapshot children : dataSnaphot.getChildrens()) {
YourModel yourModel = children.getValue(YourModel.class);
}
}
}
これを達成するために、私はあなたがuserIds
という名前の別のノードを作成してお勧めします。新しいユーザーが作成されるたびに、この新しいセクションにユーザーIDを追加するだけです。この新しいセクションでは、次のようになります。
Firebase-root
--- userIds
--- Id101: true
--- Id102: true
それからちょうどこの新しいノードのノード上のリスナーを入れて、dataSnapshotオブジェクトのexists()
メソッドを使用します。
にそれを変更することはできません:あなたは、各の値が必要な場合には、その中に繰り返すことができますしかし、なぜ存在するメソッドのデータベースルールを作成しないのですか? –
これは最も簡単な方法です。 –
IDはユーザーに接続されますか? –
例えば、彼らはあなたが確実なデータ構造について正しい101 –