如何一次将数据发送到 FirebaseFirestore 和 firebase_storage
how to send data to FirebaseFirestore and firebase_storage at once
我在使用 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(),
});
getDownloadURL doesn't return a string. It returns a Future that you should await in order to get the string. See the documentation 例如:
String downloadURL = await firebase_storage.FirebaseStorage.instance
.ref('users/123/avatar.jpg')
.getDownloadURL();
我在使用 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(),
});
getDownloadURL doesn't return a string. It returns a Future that you should await in order to get the string. See the documentation 例如:
String downloadURL = await firebase_storage.FirebaseStorage.instance .ref('users/123/avatar.jpg') .getDownloadURL();