从firebase中的数组获取值[duplicate]

jvlzgdj9  于 2023-03-03  发布在  其他
关注(0)|答案(1)|浏览(152)
    • 此问题在此处已有答案**:

FLUTTER The operator '[]' isn't defined for the type 'Object'(1个答案)
3天前关闭。

我想从一个数组字段中获取值。
但我得到了一个错误
没有为类型"Object"定义运算符"[]"。(文档)请尝试定义运算符"[]"。from this code var followedSitesList = www.example.com()!["followedSites"];value.data()!["followedSites"];

getNotificationData(BuildContext context) {
  CollectionReference notReference = FirebaseFirestore.instance.collection("notifications");
  CollectionReference siteReference = FirebaseFirestore.instance.collection("sites");
  CollectionReference userReference = FirebaseFirestore.instance.collection("users");

  FirebaseMessaging messaging = FirebaseMessaging.instance;
  messaging.getToken().then((value) {

    userReference.snapshots().forEach((users) {
      print(users.docs.map((user) {
        
        if(user["userToken"] == value ){
        
          siteReference.snapshots().forEach((sites) {
            sites.docs.map((site) {
              
              userReference.doc(user.id).get().then((value) {

                var followedSitesList = value.data()!["followedSites"];
              });
            });
          });
        }}));
    });
  });
}
wa7juj8i

wa7juj8i1#

问题就在这里:

value.data()!["followedSites"]

正如错误消息所说,这里的value.data()!是一个Object,您可以在对象上调用["followedSites"]
您知道value.data()!是一个Map,因此应该使用以下命令告诉编译器:

var values = value.data()! as Map;
var followedSitesList = values["followedSites"]

另见:

相关问题