Firebase 无法从cloud firestore检索多个Flatter集合
我要做的是从Firestore数据库中检索2个收集文档,并将其显示到我的Flitter中。我的代码是:Firebase 无法从cloud firestore检索多个Flatter集合,firebase,flutter,google-cloud-firestore,Firebase,Flutter,Google Cloud Firestore,我要做的是从Firestore数据库中检索2个收集文档,并将其显示到我的Flitter中。我的代码是: Future<QuerySnapshot> getData() async { var firebaseUser = await FirebaseAuth.instance.currentUser(); return await Firestore.instance .collection("user") .whe
Future<QuerySnapshot> getData() async {
var firebaseUser = await FirebaseAuth.instance.currentUser();
return await Firestore.instance
.collection("user")
.where("email", isEqualTo: firebaseUser.email)
.getDocuments();
}
@override
Widget build(BuildContext context) {
// Build a Form widget using the _formKey created above.
return FutureBuilder(
future: getData(),
然后,我也要检索上述收集,但我不知道如何。。。因为在同一屏幕中,我检索“用户”集合以仅显示来自特定用户的数据,并且我还需要检索“shippingAddress”集合,因为在这样的集合中有其他数据要显示
例如,如果我检索
${snapshot.data.documents[index].data["email"]} or ${snapshot.data.documents[index].data["name"]}
我已经进入了注册表单,它可以工作,并在我的小部件中显示电子邮件或姓名,但如果我想检索,例如:
${snapshot.data.documents[index].data["alias"]}
那就是创建到“shippingAddress”集合中我无法获得它们我已经为自己找到了解决方案。 首先,从现有用户获取数据:
final databaseReference = Firestore.instance;
Future<QuerySnapshot> getData() async {
var firebaseUser = await FirebaseAuth.instance.currentUser();
return await Firestore.instance
.collection("user")
.where("email", isEqualTo: firebaseUser.email)
.getDocuments();
}
@override
Widget build(BuildContext context) {
return FutureBuilder(
future: getData(),
builder: (context, AsyncSnapshot<QuerySnapshot> snapshot) {
if (snapshot.connectionState == ConnectionState.done) {
return ListView.builder(
itemCount: snapshot.data.documents.length,
itemBuilder: (BuildContext context, int index) {
return Column(
children: <Widget>[
Stream(),
final databaseReference=Firestore.instance;
Future getData()异步{
var firebaseUser=等待FirebaseAuth.instance.currentUser();
return wait Firestore.instance
.收集(“用户”)
.where(“电子邮件”,isEqualTo:firebaseUser.email)
.getDocuments();
}
@凌驾
小部件构建(构建上下文){
回归未来建设者(
future:getData(),
生成器:(上下文,异步快照){
if(snapshot.connectionState==connectionState.done){
返回ListView.builder(
itemCount:snapshot.data.documents.length,
itemBuilder:(构建上下文,int索引){
返回列(
儿童:[
Stream(),
并使用其他集合调用流生成器:
lass Stream extends StatefulWidget {
@override
_StreamState createState() => _StreamState();
}
class _StreamState extends State<Stream> {
@override
Widget build(BuildContext context) {
return StreamBuilder(
stream: Firestore.instance.collection('shippingAddress').snapshots(),
builder: (context, snapshot) {
if (!snapshot.hasData)
return Text('Loading data please Wait');
return Column(
children: <Widget>[
Container(
height: 1000,
child: ListView.builder(
itemCount: snapshot.data.documents.length,
lass流扩展StatefulWidget{
@凌驾
_StreamState createState()=>\u StreamState();
}
类_StreamState扩展了状态{
@凌驾
小部件构建(构建上下文){
返回流生成器(
流:Firestore.instance.collection('shippingAddress').snapshots(),
生成器:(上下文,快照){
如果(!snapshot.hasData)
返回文本(“正在加载数据,请稍候”);
返回列(
儿童:[
容器(
身高:1000,
子项:ListView.builder(
itemCount:snapshot.data.documents.length,
就这些!我已经找到了解决办法。 首先,从现有用户获取数据:
final databaseReference = Firestore.instance;
Future<QuerySnapshot> getData() async {
var firebaseUser = await FirebaseAuth.instance.currentUser();
return await Firestore.instance
.collection("user")
.where("email", isEqualTo: firebaseUser.email)
.getDocuments();
}
@override
Widget build(BuildContext context) {
return FutureBuilder(
future: getData(),
builder: (context, AsyncSnapshot<QuerySnapshot> snapshot) {
if (snapshot.connectionState == ConnectionState.done) {
return ListView.builder(
itemCount: snapshot.data.documents.length,
itemBuilder: (BuildContext context, int index) {
return Column(
children: <Widget>[
Stream(),
final databaseReference=Firestore.instance;
Future getData()异步{
var firebaseUser=等待FirebaseAuth.instance.currentUser();
return wait Firestore.instance
.收集(“用户”)
.where(“电子邮件”,isEqualTo:firebaseUser.email)
.getDocuments();
}
@凌驾
小部件构建(构建上下文){
回归未来建设者(
future:getData(),
生成器:(上下文,异步快照){
if(snapshot.connectionState==connectionState.done){
返回ListView.builder(
itemCount:snapshot.data.documents.length,
itemBuilder:(构建上下文,int索引){
返回列(
儿童:[
Stream(),
并使用其他集合调用流生成器:
lass Stream extends StatefulWidget {
@override
_StreamState createState() => _StreamState();
}
class _StreamState extends State<Stream> {
@override
Widget build(BuildContext context) {
return StreamBuilder(
stream: Firestore.instance.collection('shippingAddress').snapshots(),
builder: (context, snapshot) {
if (!snapshot.hasData)
return Text('Loading data please Wait');
return Column(
children: <Widget>[
Container(
height: 1000,
child: ListView.builder(
itemCount: snapshot.data.documents.length,
lass流扩展StatefulWidget{
@凌驾
_StreamState createState()=>\u StreamState();
}
类_StreamState扩展了状态{
@凌驾
小部件构建(构建上下文){
返回流生成器(
流:Firestore.instance.collection('shippingAddress').snapshots(),
生成器:(上下文,快照){
如果(!snapshot.hasData)
返回文本(“正在加载数据,请稍候”);
返回列(
儿童:[
容器(
身高:1000,
子项:ListView.builder(
itemCount:snapshot.data.documents.length,
仅此而已!您是否尝试使用一种聚合查询?您是否尝试使用一种聚合查询?