繁体   English   中英

如何从 Firestore 获取数组字段值

[英]How to Get Array Field Values From Firestore

我有一个使用 Firestore 存储用户数据的 Flutter 应用程序。 我需要帮助来检索存储在“朋友”数组中的值。 下图显示了我的 Firestore 的结构。 如您所见,“朋友”字段是一个包含两个值的数组:“123456”和“789123”。

Firestore 数据库的屏幕截图,显示了集合名称、文档名称以及“朋友”、“uid”和“用户名”字段。

我想将这些值存储在我的名为friendsList的变量中,并尝试在 getFriendsList() 中执行此操作。 为了测试 'friends' 数组值是否存储在friendsList变量中,我在 getFriendsList() 末尾使用 print 语句来打印friendsList的值。 但是当我检查我的控制台时,会打印Instance of 'Future<dynamic>'而不是“friends”字段的值。

如何将 Firestore 中的“朋友”数组字段的值分配到我的friendsList变量中?

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:mood/components/nav_drawer.dart';
import 'package:cloud_firestore/cloud_firestore.dart';

FirebaseAuth auth = FirebaseAuth.instance;
User currentUser;
String currentUserUID;
Future<dynamic> friendsList;

class LandingScreen extends StatefulWidget {
  static const String id = 'landing_screen';

  @override
  _LandingScreenState createState() => _LandingScreenState();
}

class _LandingScreenState extends State<LandingScreen> {
  final _auth = FirebaseAuth.instance;

  @override
  void initState() {
    super.initState();
    getUserData();
  }

  void getUserData() {
    getCurrentUser();
    getCurrentUserUID();
    getFriendsList();
  }

  void getCurrentUser() {
    final currentUser = _auth.currentUser;
  }

  void getCurrentUserUID() {
    currentUserUID = auth.currentUser.uid;
  }

  void getFriendsList() {
    friendsList = FirebaseFirestore.instance
        .collection("Users")
        .doc(currentUserUID)
        .get()
        .then((value) {
      return value.data()["friends"];
    });
    print(friendsList);
  }

在 then 回调中,只需将您的列表分配给 friendsList 并将您的 friendsList 更改为List<dynamic>类型

FirebaseFirestore.instance
    .collection("Users")
    .doc(currentUserUID)
    .get()
    .then((value) {
       friendsList = value.data()["friends"];
       print(friendsList);
    });

根据您对异步等待语法的评论,

final value = await FirebaseFirestore.instance
    .collection("Users")
    .doc(currentUserUID)
    .get();

friendsList = value.data()["friends"];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM