что я могу сделать, я хочу, чтобы данные базы данных читались всеми, но данные удалялись одним и тем же лицом с идентификатором - PullRequest
0 голосов
/ 05 марта 2020

Это мое правило базы данных Firebase Realtime, предположим, что здесь два пользователя устройства A и B, A добавляет данные через приложение в базу данных firebase realTime, поэтому B читает те данные, которые добавлены пользователем A, тот же B добавляет данные через приложение Таким образом, A читает эти данные, но оба пользователя A или B удаляют только собственные данные, которые он ввел, A удаляет только собственные данные, а B удаляет только собственные данные, но оба пользователя читают данные друг друга (означает, что данные вводятся пользователь виден миру) .. Итак, какое правило применимо здесь. Например, в разделе комментариев на Facebook комментарий виден всем, но этот комментарий удален администратором или теми, кто делает этот комментарий, поэтому я хочу вот так, вот мой код правила для данных

 {
      "rules": {
        "$uid": {
          ".write": "$uid === auth.uid",
          ".read": "auth != null"
       }
     }
}

это настройка firebase и firebaseUser, а потомок - это данные, которые находятся в onCreate

FirebaseUser mUser = mAuth.getCurrentUser ();
    String uid = mUser.getUid ();
    myRef = FirebaseDatabase.getInstance ().getReference ( "data" ).child ( uid );
    myRef.keepSynced ( true );//for syncronize the firebase data

, а данные отправляются в firebase, вот так, вот мой код java для отображения данных из firebase в Пользовательский интерфейс и мое приложение - поддержка Google и Facebook. Войдите,

  public void ShowData()
        {


            query1 = myRef.orderByChild ( "dateTime" ); 

            options = new FirebaseRecyclerOptions.Builder < modelClass > ().setQuery ( query1 , modelClass.class ).build ();


            adapter = new FirebaseRecyclerAdapter < modelClass, MyVIewHolder > ( options )
            {
                @Override
                public void onDataChanged() 
                {

                    super.onDataChanged ();
                }

                @Override
                protected void onBindViewHolder(@NonNull final MyVIewHolder holder , final int position , @NonNull modelClass model) 
               {

                        holder.setFoodPost ( model ); //for set all data to view

. Это открыто, когда пользователь делает длинный щелчок на данных, здесь окно удаления (alertDialog) открывает и удаляет определенные данные, но я хочу, чтобы окно удаления не открывается, когда другой пользователь хочет удалить данные другого лица, означает, что пользователь может удалить только собственные данные (удаление оповещения открывается, когда пользователь хочет удалить собственные данные), если он хочет удалить данные другого человека, окно удаления не открывается, так что я должен сделать здесь, и этот код также находится в onBilndViewHolder

     //for longPress on particular view

                    holder.itemView.setOnLongClickListener ( new View.OnLongClickListener () {
                        @Override
                        public boolean onLongClick(View view) {

                            post_key = getRef ( position ).getKey ();

                                openDeleteWindow ();

                                 return true;
                            }

                        }
                    } );



                @NonNull
                @Override
                public MyVIewHolder onCreateViewHolder(@NonNull ViewGroup parent , int viewType) 
{
                    View v = LayoutInflater.from ( parent.getContext () ).inflate ( 
                   R.layout.recycler_view_item_layout , parent , false );
                    Log.d ( "firee","orCreate" );
                    return new MyVIewHolder ( v );



                }
            };
            adapter.startListening (); //if you use FirebaseRecyclerAdapter then this is nessasry

            recyclerView.setAdapter ( adapter ); //set adapter into recyclerView

это моя база огня * 10 13 *

 datamyapp-cbfba

    |-- data
        |-WNOAsWDaVlQXq2DssE9AsUCw1jB3    <- Device A (googleSignInKey)
        | |-M1UGU8pMJiNGd5zsG_r
        |   |-college:"ABES"
        |   |-contact:"956379797"
        |   |-dateTime:"03-03-2020 12:52:05"
        |   |-food: "Burger"
        |   |-name:"Vishal"
        |
        |-XiFNOWYYFHhjRdHx7AGOtchjN4x2   <- Device B (googleSignInKey)
          |-M1UGqWNjWVIlbtluD6D
           |-college:"TMU"
           |-contact:"9578379797"
           |-dateTime:"03-03-2020 12:50:05"
           |-food: "Pizza"
           |-name:"Ankit"

Ответы [ 2 ]

0 голосов
/ 05 марта 2020

Просто посмотрите на это:

enter image description here

Здесь сохраняются данные двух пользователей ('keshtynejat' & 'mohammadmoeingolchin'). Как видите, данные сохраняются полностью отдельно. Как вы читаете данные одного пользователя ?! Вы можете читать данные всех пользователей одинаково.

0 голосов
/ 05 марта 2020

Для записи данных в Firebase вы должны записать данные отдельно для A & B. Для чтения данных из FireBase вы можете прочитать все данные, которые были записаны A или B. Таким образом, для удаления у вас нет проблем. Данные сохраняются отдельно. A удаляет его / ее данные, а B удаляет его / ее данные.

...