我目前正試圖制作一個需要從嵌套的Firestore資料庫中一次性讀取資料的應用程式。
以下是我目前的作業代碼
FirebaseFirestore firestore = FirebaseFirestore.instance;
CollectionReference users = firestore.collection('users')。
FirebaseAuth _auth = FirebaseAuth.instance;
FutureBuilder getTheData = FutureBuilder<DocumentSnapshot>(
future: users.doc(_auth.currentUser!.uid).get() 。
builder:
(BuildContext context, AsyncSnapshot< DocumentSnapshot> snapshot) {
if (snapshot.hasError || (snapshot.hasData && !snapshot.data!.exists)) {
return Text("Something went wrong") 。
}
if (snapshot.connectionState == ConnectionState.done) {
Map<String, dynamic> data =
snapshot.data!.data() as Map<String, dynamic>;
String _condition = data['condition'/span>]。
String _descCondition = data['descCondition']。
int _percentageValue = data[' percentageValue']。
return defaultDraw(
條件。_condition,
descCondition: _descCondition,
percentageValue。_percentageValue。
);
}
return defaultDraw(
條件。"加載"。
descCondition: ""。
percentageValue。0,
);
},
);
而且它能夠讀取這些資料(條件、descondition和 percentageValue)。

這是我的代碼 :
FirebaseFirestore firestore = FirebaseFirestore.instance;
CollectionReference users = firestore.collection('users')。
FirebaseAuth _auth = FirebaseAuth.instance;
FutureBuilder _getParameterData = FutureBuilder<DocumentSnapshot>(
未來:用戶
.doc(_auth.currentUser!.uid)
.collection('adviceData')
.doc()
.get()。
builder:
(BuildContext context, AsyncSnapshot< DocumentSnapshot> snapshot) {
if (snapshot.hasError || (snapshot.hasData && !snapshot.data!.exists)) {
return Text("Something went wrong") 。
}
if (snapshot.connectionState == ConnectionState.done) {
Map<String, dynamic> data =
snapshot.data!.data() as Map<String, dynamic>;
String _advicePhLow = data['advicePhLow'/span>]。
String _advicePhHigh = data['advicePhHigh']。
String _adviceTempLow = data['adviceTempLow']。
String _adviceTempHigh = data['adviceTempHigh']。
String _adviceHeightLow = data['adviceHeightLow']。
String _adviceHeightHigh = data['adviceHeightHigh']。
return drawParameter(
advicePhLow: _advicePhLow,
adviceTempLow: _adviceTempLow,
adviceHeightLow: _adviceHeightLow,
);
}
return drawParameter()。
},
);
而我的問題是:
- 我在哪里犯了錯誤?
- 是否有更好的方法從Firestore獲取資料?
預先感謝
uj5u.com熱心網友回復:
如果你想從子集合adviceData中獲得所有的documents,你需要獲得一個QuerySnapshot,像這樣:
FutureBuilder<QuerySnapshot> (
未來:用戶
.doc(_auth.currentUser!.uid)
.collection('adviceData')
.get()。
builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
if (snapshot.hasError) {
return Text(' Something went wrong')。
}
if (snapshot.connectionState == ConnectionState.waiting) {
return Text(" Loading");
}
return ListView(
children: snapshot.data!.docs.map((DocumentSnapshot document) {
Map<String, dynamic> data =document.data() ! as Map<String, dynamic> 。
return ListTile(
標題。Text(data['full_name'])。
副標題。Text(data['company'])。
);
}).toList()。
);
},
);
}
如果你想從該子集合中獲得一個單一的檔案,你將需要定義該特定檔案的id:
FutureBuilder _getParameterData = FutureBuilder<DocumentSnapshot> (
未來:用戶
.doc(_auth.currentUser!.uid)
.collection('adviceData')
.doc('documentID') // here.
.get()。
構建者。
。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/325749.html
標籤:
下一篇:TypeError:firebase_compat_app__WEBPACK_IMPORTED_MODULE_0__.default.firestore不是一個函式。


