【问题标题】:how to send data to FirebaseFirestore and firebase_storage at once如何一次将数据发送到 Firebase Firestore 和 Firebase 存储
【发布时间】:2022-01-04 13:07:56
【问题描述】:

我在使用 firebase 和 flutter 时遇到了一些困难。在这段代码中,我试图创建一个用户,将图像发送到 fireStore,并将所有数据放入 firebase firestore。它正在创建用户,但由于某种原因,它要么不将数据发送到 firebase firestore,要么不将图像放入 firebase 存储。这些功能中只有一个可以工作,但不能同时使用。

当我删除代码时:

final imageRef = firebase_storage.FirebaseStorage.instance
    .ref()
    .child("userImage")
    .child(FirebaseAuth.instance.currentUser.uid + ".jpg");

await imageRef.putFile(image);

  "userImage": imageRef.getDownloadURL(), // and deleted this field from the collection

FirebaseFirestore.instance 工作正常。 当我删除这段代码时:

FirebaseFirestore.instance
    .collection("User")
    .doc(_authResult.user.uid)
    .set({
  "userName": userName,
  "email": email,
  "password": passWord,
  "userImage": imageRef.getDownloadURL(),
});

imageRef.putFile 工作并进入存储。

因此,出于某种原因,它们以某种方式相互影响。如何使这两个功能都起作用?

这里是完整的代码:

UserCredential _authResult = await FirebaseAuth.instance
        .createUserWithEmailAndPassword(email: email, password: passWord);
    setState(() {
      isLoading = true;
    });
    
    final imageRef = firebase_storage.FirebaseStorage.instance
        .ref()
        .child("userImage")
        .child(FirebaseAuth.instance.currentUser.uid + ".jpg");
    
    await imageRef.putFile(image);
    
    FirebaseFirestore.instance
        .collection("User")
        .doc(_authResult.user.uid)
        .set({
      "userName": userName,
      "email": email,
      "password": passWord,
      "userImage": imageRef.getDownloadURL(),
    });

【问题讨论】:

    标签: firebase flutter dart google-cloud-firestore firebase-storage


    【解决方案1】:

    getDownloadURL 不返回字符串。它返回一个 Future ,您应该等待它以获取字符串。示例见documentation

      String downloadURL = await firebase_storage.FirebaseStorage.instance
          .ref('users/123/avatar.jpg')
          .getDownloadURL();
    

    【讨论】:

      猜你喜欢
      • 2019-11-15
      • 1970-01-01
      • 1970-01-01
      • 2021-08-02
      • 2021-08-11
      • 2018-11-06
      • 2022-06-23
      • 2021-03-14
      • 1970-01-01
      相关资源
      最近更新 更多