база данных, не хранящаяся в базе данных firebase

# #firebase #flutter #firebase-realtime-database

Вопрос:

Пытаюсь сохранить адрес из текстового поля в базу данных firebase, но не удается сохранить.

приведенный ниже код предназначен для создания справочной базы данных домашних животных для хранения данных нашего текстового поля. amp; _txtCtrl для обработки пользовательских вводов.

 DatabaseReference dbRef = FirebaseDatabase.instance.reference().child("Pets");
 

и ниже приведен код для отправки данных в базу данных firebase:

 void saveData(String text) {
    dbRef.push().set({
      "My Pets": _txtCtrl.text,
      "timestamp": DateTime.now().millisecondsSinceEpoch
    });
  }
 

и вот как я назвал метод SaveData()

                       child: RaisedButton(
                      onPressed: () {
                        saveData(_txtCtrl.text);
                      },
                      child: Text('SAVE'),
                    ), 
 

Мои правила базы данных Firebase:

 {
  "rules": {
   ".read": "now < 1616092200000",  // 2021-5-19
    ".write": "now < 1616092200000",  // 2021-5-19
  }
}
 

Комментарии:

1. каковы версии ваших пакетов firebase ?

2. вы используете "Address" ссылку дважды, один раз при объявлении deRef , а затем внутри saveData(...) функции.

3. @SatyajyotiBisвсе до этого я использовал push (), но все еще не работает

4. пожалуйста, ознакомьтесь с правилами базы данных Firbase

5. С какой ошибкой вы столкнулись?

Ответ №1:

Может быть, вам следует установить свои правила так: (У меня была та же проблема. Это работает на меня.)

 {
  "rules": {
    ".read": true,
    ".write": true
  }
}
 

Примечание: Это решение предназначено только для целей тестирования с вышеуказанным решением, вы предоставляете публичное разрешение на чтение и запись вашей базы данных.

Комментарии:

1. Это отнимает цель правил, которая заключается в обеспечении безопасности. Вы можете попросить человека, задавшего вопрос, сделать это, если хотите точно определить проблему в соответствии с правилами, а затем предложить лучшее решение

2. Это была моя проблема. Спасибо.

Ответ №2:

Firestore-это, в основном, коллекция документов. Вы всегда пытаетесь хранить свои данные в документе , а не обращаться ко всей базе данных , с которой вы работаете dbRef . Вместо этого попробуйте сделать вот так :

Первый документ доступа, который вы хотите сохранить в

Это можно сделать с помощью следующего кода :

DocumentReference documentReference = FirebaseFirestore.instance.collection( Name of collection such as "UserData").doc( Name of document such as "Address")

Запустите транзакцию для установки или обновления данных

FirebaseFirestore.instance.runTransaction((transaction) async { documentReference.set( {"Location": _txtCtrl.text,"timestamp": DateTime.now().millisecondsSinceEpoch}); return true;});

Комментарии:

1. Пользователь явно использует базу данных firebase в реальном времени, а не базу данных firestore