无法从 firebase 查询 Flutter 中获取单个记录
Posted
技术标签:
【中文标题】无法从 firebase 查询 Flutter 中获取单个记录【英文标题】:Can't get hold of single records from firebase query Flutter 【发布时间】:2020-10-10 17:45:58 【问题描述】:我正在查询 Firebase 实时数据库,并且在查询本身中打印 snapshot.value 会打印正确的条目值,但是当我尝试将单个记录转换为 Item 时,所有值都为空。 forEach 循环抛出错误: type '(dynamic) => Null' 不是 '(dynamic, dynamic) => void' of 'f' 的子类型 你能看出我做错了什么吗?
await _databaseReference
.child('Continent')
.child('Europe')
.child('Country')
.child(countryDb)
.child('Region')
.child(regionDb)
.child('City')
.child(cityDb)
.child('Catalog')
.orderByChild('Product Category')
.equalTo(query)
.once()
.then((snapshot)
print(
' local db result is $snapshot, value is $snapshot.value, item is $Item.fromFirebase(snapshot.value).toMap().toString()'); //item's values are null
snapshot.value.forEach((childSnapshot)
// results.add(Item.fromFirebase(childSnapshot));
// print('childSnapshot is : $Item.fromFirebase(childSnapshot)');
print('childSnapshot is : $childSnapshot');
);
return;
);
Item.fromFirebase:
static Item fromFirebase(Map<dynamic, dynamic> map)
return Item(
itemId: map['Product Id'],
brand: map['Brand'],
itemName: map['Product Name'],
category: map['Product Category'],
price: map['Product Price'],
description: map['Product Description'],
vendor: map['Product Vendor'],
code: map['Code'],
isPromotion: map['isPromotion'],
imageUrl: map['Product Picture Url']);
【问题讨论】:
【参考方案1】:发现问题。 foreach 类型错误。由于值类型是 Map
传入 2 个值,它确实按预期工作。
await _databaseReference
.child('Continent')
.child('Europe')
.child('Country')
.child(countryDb)
.child('Region')
.child(regionDb)
.child('City')
.child(cityDb)
.child('Catalog')
.orderByChild('Product Category')
.equalTo(query)
.once()
.then((snapshot)
print(' local db result is $snapshot, value is $snapshot.value');
snapshot.value.forEach((key, childSnapshot)
print('childSnapshot is : $childSnapshot');
print(
'childSnapshot is : $Item.fromFirebase(childSnapshot).toMap().toString()');
results.add(Item.fromFirebase(childSnapshot));
);
return;
);
【讨论】:
以上是关于无法从 firebase 查询 Flutter 中获取单个记录的主要内容,如果未能解决你的问题,请参考以下文章
无法从 Flutter 中的 Firebase Firestore 返回列表
Flutter Firebase异步查询未在流函数中检索数据
Flutter:无法从 firebase 读取数据。方法 '[]' 在 null 错误上被调用