# #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