Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
23 / 23 / 0
Регистрация: 26.02.2014
Сообщений: 684

FireBase | Realtime DataBase Rules| как это настроить?

05.03.2017, 17:39. Показов 3484. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!

в правилах FB следующее:

JSON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
{
  "rules": {
    "users": {
      "$uid": {
        ".read": "auth != null && auth.uid == $uid",
        ".write": "auth != null && auth.uid == $uid",
        "items": {
          "$item_id": {
            "title": {
              ".validate": "newData.isString() && newData.val().length > 0"
            },
            "number": {
              ".validate": "newData.isString() && newData.val().length > 0"
            },
            "additions": {
              ".validate": "newData.isString() && newData.val().length > 0"
            },
            "pincode": {
              ".validate": "newData.isString() && newData.val().length > 0"
            },
            "comment": {
              ".validate": "newData.isString() && newData.val().length > 0"
            }
            
            }
          }
        }
      }
    }
  }
пытаюсь добавить данные как в примере с гуглосайта ноль эмоций, ну и тп.п день убил.

в коде добавления у меня такое:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 public void onClick(DialogInterface dialog, int which) {
                        //отправляем результат обратно
                        title = etName.getText().toString();
                        number = etNum.getText().toString();
                        additions= etAddit.getText().toString();
                        pincode = etPin.getText().toString();
                        comment = etComm.getText().toString();
 
                       String key = MainActivity.mDatabase.child("posts").push().getKey();
                        SearchList searchList = new SearchList(title, number, additions, pincode,comment);
                        Map<String, Object> postValues = searchList.toMap();
 
 
                       // Toast.makeText(getActivity(), key, Toast.LENGTH_LONG).show();
                        Map<String, Object> childUpdates = new HashMap<>();
                       childUpdates.put("/posts/" + key, postValues);
                        childUpdates.put("/user-posts/" + MainActivity.mUserId + "/" /*+ key*/, postValues);
 
                        MainActivity.mDatabase.updateChildren(childUpdates);
 
                        etName.setText("");
                        etNum.setText("");
                        etAddit.setText("");
                        etPin.setText("");
                        etComm.setText("");
                     //   MainActivity.mAdapter.notifyDataSetChanged();
                    }
а в базе на FireBase -
Java
1
null
;

как с этим разобраться помогите кто работал, т.е. приложению просто нужно в пять полей добавлять данные для списка.

З.Ы. кста вот так работает:
Java
1
mDatabase.child("users").child(mUserId).child("items").push().child("title").setValue(text.getText().toString());
т.е. в title добавляет запись.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.03.2017, 17:39
Ответы с готовыми решениями:

Массивы в Firebase Realtime Database
Всем привет! Допустим есть некий массив в БД Firebase, вот: Для андроид студио сделан код чтобы он считывал первый массив значение...

Запись пользователя в Realtime Database при регистрации
Это код из одного курса на Pluralsight Объясните, пожалуйста, почему здесь signOut() и redirectLoginScreen() дублируются для...

Ошибка при работе с Firebase Database
Привет всем, столкнулся с проблемой, если вы понимаете в Firebase Realtime Database, а в частности в работе с массивами в ней, помогите...

6
23 / 23 / 0
Регистрация: 26.02.2014
Сообщений: 684
13.03.2017, 14:21  [ТС]
может кто-то делал похожее, нужно сохранять данные из нескольких EditText из окна приложения, в одно поле title могу записать, а в несколько не знаю как, помогите примером или мыслями кто делал?
0
3 / 3 / 1
Регистрация: 29.02.2016
Сообщений: 97
13.03.2017, 17:07
Цитата Сообщение от disx Посмотреть сообщение
помогите примером или мыслями кто делал?
Попробуй посмотреть тут: https://www.youtube.com/watch?... RmQ4OedWrt
Думаю что - то может пригодиться...
1
23 / 23 / 0
Регистрация: 26.02.2014
Сообщений: 684
14.03.2017, 13:24  [ТС]
Получилось сразу добавлять несколько полей,... остался один вопрос:

на картинке значение каждого поля под отдельным itemsID:


как в правилах настроить чтобы и title и number были вместе?

JSON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
{
  "rules": {
    "users": {
      "$uid": {
        ".read": "auth != null && auth.uid == $uid",
        ".write": "auth != null && auth.uid == $uid",
        "items": {
          "$item_id": {
            
            "title": {
              ".validate": "newData.isString() && newData.val().length > 0"
            },
            "number": {
              ".validate": "newData.isString() && newData.val().length > 0"
            },
            "additions": {
              ".validate": "newData.isString() && newData.val().length > 0"
            },
            "pincode": {
              ".validate": "newData.isString() && newData.val().length > 0"
            },
            "comment": {
              ".validate": "newData.isString() && newData.val().length > 0"
            }
            
            }
          }
        }
      }
    }
  }
ребят кто c Json плотно работает подскажите плиз
0
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
14.03.2017, 14:08
Лучший ответ Сообщение было отмечено disx как решение

Решение

Создай объект другой и положи их вместе.
0
23 / 23 / 0
Регистрация: 26.02.2014
Сообщений: 684
15.03.2017, 11:01  [ТС]
ExFau$t, попробовал так, но теперь не понимаю как к ним стучать...

JSON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
{
  "rules": {
    "users": {
      "$uid": {
        ".read": "auth != null && auth.uid == $uid",
        ".write": "auth != null && auth.uid == $uid",
        "items": {
          "$item_id": {
            
            "title": {
              ".validate": "newData.hasChildren(['title', 'number', 'additions', 'pincode', 'comment'])",
               
              "title":{
                ".validate": "newData.isString() && newData.val().length > 0"
            },
              "number":{
                ".validate": "newData.isString() && newData.val().length > 0"
            },
              "additions": {
              ".validate": "newData.isString() && newData.val().length > 0"
            },
             "pincode": {
              ".validate": "newData.isString() && newData.val().length > 0"
            },
             "comment": {
              ".validate": "newData.isString() && newData.val().length > 0"
            }
            
            }
            }
          }
        }
      }
    }
  }
но так достучаться не выходит:
Java
1
mDatabase.child("users").child(mUserId).child("items").push().child("title").child("number").setValue(number);
что не так ?!

Добавлено через 20 часов 51 минуту
решил следующее, пусть эта структура остается как есть:
Кликните здесь для просмотра всего текста
JSON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
{
  "rules": {
    "users": {
      "$uid": {
        ".read": "auth != null && auth.uid == $uid",
        ".write": "auth != null && auth.uid == $uid",
        "items": {
          "$item_id": {
            
            "title": {
              ".validate": "newData.isString() && newData.val().length > 0"
            },
            "number": {
              ".validate": "newData.isString() && newData.val().length > 0"
            },
            "additions": {
              ".validate": "newData.isString() && newData.val().length > 0"
            },
            "pincode": {
              ".validate": "newData.isString() && newData.val().length > 0"
            },
            "comment": {
              ".validate": "newData.isString() && newData.val().length > 0"
            }
            
            }
          }
        }
      }
    }
  }


но когда вытягиваются данные, то в список приложения попадает каждое значение в отдельный item, а мне надо чтоб вытягивались все значения в один item списка, почему так может быть и как исправить?

данные в List добавляю так:

Java
1
2
3
4
5
6
7
8
    mDatabase.child("users").child(mUserId).child("items").addChildEventListener(new ChildEventListener() {
 
                @Override
                public void onChildAdded(DataSnapshot dataSnapshot, String s) {
                    //adapter.add((String) dataSnapshot.child("title").getValue());
                         data.add(new SearchList(null,(String) dataSnapshot.child("title").getValue(),(String) dataSnapshot.child("number").getValue(),
                                 (String) dataSnapshot.child("additions").getValue(), (String) dataSnapshot.child("pincode").getValue(),
                                 (String)  dataSnapshot.child("comment").getValue()));
0
23 / 23 / 0
Регистрация: 26.02.2014
Сообщений: 684
17.03.2017, 12:16  [ТС]
долго ломал моск, но таки разобрался, короче поставленая задача решена так:

в правилах такое:
Json
Кликните здесь для просмотра всего текста
JSON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
{
  "rules": {
    "users": {
      "$uid": {
        ".read": "auth != null && auth.uid == $uid",
        ".write": "auth != null && auth.uid == $uid",
        "items": {
          "$item_id": {
            
            
              ".validate": "newData.hasChildren(['title', 'number', 'additions', 'pincode', 'comment'])",
               
              "title":{
                ".validate": "newData.isString() && newData.val().length > 0"
            },
              "number":{
                ".validate": "newData.isString() && newData.val().length > 0"
            },
              "additions": {
              ".validate": "newData.isString() && newData.val().length > 0"
            },
             "pincode": {
              ".validate": "newData.isString() && newData.val().length > 0"
            },
             "comment": {
              ".validate": "newData.isString() && newData.val().length > 0"
            }
            
            
            }
          }
        }
      }
    }
  }


а стучать вот так:
Java
1
2
Model searchList("бла","бла","бла","бла","бла","бла"); 
mDatabase.child("users").child(mUserId).child("items" + itemKey).setValue(searchList);
но для полного кайфа остался один косметический вопрос, изменяю параметры в полях в окне Dialog, в базе все меняется в реальном времени, но когда делаешь по кнопке диалога в конце кода
Java
1
recyclerAdapter.notifyDataSetChanged()
он оставляет предыдущий айтем списка (со старыми данными) и добавляет еще один(хотя в базе всего один), а когда напр. ворочаешь экран лишний(старый) айтем пропадает.

как с этой бедой справиться, помоЖите плиз ?

Добавлено через 15 часов 37 минут
Почему RecyclerView может добавлять новую (измененную позицию), и так же отображать изначальную копию item одновременно???

ведь данные в базе в реальном времени обновляются и при добавлении нового айтема такого нет...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.03.2017, 12:16
Помогаю со студенческими работами здесь

Игровая валюта с AdMob Rewarded Video / Firebase database
Здравствуйте. На основании этой статьи: https://habrahabr.ru/post/335008/ делаю игровую валюту. У меня возникла проблема при сохранении и...

Android Studio изъятие данных из дочерних firebase database в RecyclerView через fragment
Здравствуйте, я только начинаю программировать на андроиде, подскажите пожалуйста где и что я неправильно написала что у меня не...

Push firebase не могу настроить
Приветствую. Когда был обычный GCM у меня прога работала. Потом они внедрили фаербэйс и все полетело. Пытаюсь сделать новый проект и уже...

Недостаточно памяти - как это настроить?
Убрал файл подкачки ибо нагружается ssd. Начало частенько вылетать сообщение, что недостаточно памяти, хотя свободно еще около гигабайта....

Wordpress и популярные записи. Как это настроить?
Никак не могу понять откуда должны браться популярные записи для темы Wordpress взятой вот отсюда...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru