Firebase/Flutter - 无法将数据写入数据库

Posted

技术标签:

【中文标题】Firebase/Flutter - 无法将数据写入数据库【英文标题】:Firebase/Flutter - cannot write data to database 【发布时间】:2021-04-15 08:29:49 【问题描述】:

我正在编写我的 Flutter 应用程序,它要求用户将某些图像上传到 Firebase。 一切都可以完美地进行用户身份验证并将图像存储到 Firebase 存储。 在要求用户从他的手机上传带有描述的图片的部分中,我得到的只是 Firebase 存储部分中的图片但我的数据库中没有描述和其他元数据

我检查了数据库规则,它们是公开的并且工作正常。

这是图片上传部分的当前代码,工作正常:

 void uploadStatusImage() async 
if (validateAndSave()) 
  final Reference postImageRef =
      FirebaseStorage.instance.ref().child("Post Images");
  var timeKey = new DateTime.now();

  final Task uploadTask =
      postImageRef.child(timeKey.toString() + ".jpg").putFile(sampleImage);

  var ImageUrl = await (await uploadTask).ref.getDownloadURL();

  url = ImageUrl.toString();

  print("Image URL = " + url);

  goToHomePage();
  saveToDatabase(url);

这是不工作的数据库部分:

void saveToDatabase(url) 
var dbTimeKey = new DateTime.now();
var formatDate = new DateFormat('MMM d, yyyy');
var formatTime = new DateFormat('EEEE, hh:mm aa');

String date = formatDate.format(dbTimeKey);
String time = formatTime.format(dbTimeKey);

DatabaseReference ref = FirebaseDatabase.instance.reference();

var data = 
  "image": url,
  "description": _myValue,
  "date": date,
  "time": time,
;
ref.child("Posts").push().set(data);

VS 代码没有给我任何错误,并且应用程序在我的 android 模拟器中运行良好。 任何帮助将不胜感激。谢谢。

【问题讨论】:

我在flutter/web中遇到了类似的问题(数据没有写入db,但没有dart异常),问题是由于配置文件中初始化FirebaseApp的url不正确造成的。在 Android 中可能会有所不同,cmq 我建议您检查配置 json 文件(特别是 databaseUrl 与您在 firebase 控制台中看到的相对应)。 【参考方案1】:

您可能希望在转到主页之前先保存到数据库中?

  void uploadStatusImage() async 
    if (validateAndSave()) 
      final Reference postImageRef =
          FirebaseStorage.instance.ref().child("Post Images");
      var timeKey = new DateTime.now();

      final Task uploadTask =
          postImageRef.child(timeKey.toString() + ".jpg").putFile(sampleImage);

      var ImageUrl = await (await uploadTask).ref.getDownloadURL();

      url = ImageUrl.toString();

      print("Image URL = " + url);

      saveToDatabase(url); // Switch positions
      goToHomePage(); // <-----
    
  

【讨论】:

感谢您的建议,但同样的事情:/ 将图像上传到存储工作,但我的数据库中没有数据。 你在调用 set 时尝试过 await for 吗? ? 等待 ref.child("Posts").child(newKey).set(data); - 尝试过,仍然无法正常工作.. 感谢您的帮助! 也许新的编辑可以吗?现在我融入了 我在写所有这些之前已经怀疑这是一个错误并尝试了但结果是一样的......:/

以上是关于Firebase/Flutter - 无法将数据写入数据库的主要内容,如果未能解决你的问题,请参考以下文章

Firebase Cloud Messaging 无法在带有 Flutter 应用程序的 Android 上运行

无论如何都可以将firebase存储用于flutter桌面吗?

Firebase、Flutter - 读取、检索过滤后的数据

使用嵌套地图检索数据并将其保存到 Firebase - Flutter [关闭]

Android Sign in with apple and firebase flutter

Firebase + Flutter - 云函数 onCall 导致 Android 应用出现“未经身份验证”错误