我试图从firebase检索数据(客户名称,客户ID)并将其存储到变量中。之后,我想将变量数据存储到另一个firebase路径位置。
我可以调用快照并打印它,但是我不能将数据从firebase保存到变量中。
CollectionReference orderInfo =
FirebaseFirestore.instance.collection('orderInfo');
final user = FirebaseAuth.instance.currentUser;
String cusName;
String add;
void getNameAddress() async {
final doc = await FirebaseFirestore.instance
.collection('users')
.doc(user.uid)
.get();
cusName = doc['name'];
add = doc['address1'] + '' + doc['address2'] + '' + doc['address3'];
}
Future initializeOrder(BuildContext ctx) {
getNameAddress();
return orderInfo.doc(user.uid + 'order').set({
'orderID': '',
'cusID': user.uid,
'cusName': cusName,
'cusAdd': add,
'clID': '',
'clName': null,
'price': null,
'selectedDate': null,
'serviceSelected': null,
'typeOfService': 'Not selected yet',
});
}
initializeorder()是我用来在另一个路径中存储数据的函数。
我该如何解决这个问题?
由于getNameAddress()
函数是async
,而Firestore的set()
方法是异步的,因此您需要将initializeOrder()
函数设置为async
,并在调用getNameAddress()
时使用await
,如下所示:
Future<void> initializeOrder(BuildContext ctx) async {
await getNameAddress();
return orderInfo.doc(user.uid + 'order').set({
'orderID': '',
'cusID': user.uid,
'cusName': cusName,
'cusAdd': add,
'clID': '',
'clName': null,
'price': null,
'selectedDate': null,
'serviceSelected': null,
'typeOfService': 'Not selected yet',
});
}