簡體   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