gpt4 book ai didi

json - 如何获取带有对象列表的文档? -消防站

转载 作者:行者123 更新时间:2023-12-03 04:57:06 26 4
gpt4 key购买 nike

我需要获取包含Firestore中对象列表的文档

doc 1
id:123
name: product1
categories:
[0]
catid:21
name: category21
[1]
catid:34
name: category34
doc 2
id:456
name: product2
categories:
[0]
catid:9
name: category9
[1]
catid:4
name: category4

我终于找到了如何添加带有类别对象列表的产品(因为我在下面的productModel中定义了类别),但是我无法获得带有类别对象列表的产品:(
我在ProductModel中尝试过
if(data[CATEGORIES] != null){
// categories.add(data[CATEGORIES].map());
categories.add(CategoryModel.fromMap(data[CATEGORIES]));
// categories.addAll(data[CATEGORIES].values());
// categories = data[CATEGORIES].map((i) => i.fromMap());
};

但它们都不适用于味精:
Unhandled Exception: type 'List<dynamic>' is not a subtype of type 'Map<String, 
dynamic>'

消防站:
getProducts(ProductProvider productProvider) async{
QuerySnapshot snapshot= await Firestore.instance.collection('products').getDocuments();
List<ProductModel> _productList=[];
snapshot.documents.forEach((document){
ProductModel product= ProductModel.fromMap(document.data);
_productList.add(product);
});
productProvider.productList=_productList;
}

uploadProduct(ProductModel product) async {
CollectionReference productRef = Firestore.instance.collection('products');
DocumentReference documentRef = await productRef.add(product.toMap());
product.id = documentRef.documentID;
print('uploaded product successfully: ${product.toString()}');
await documentRef.setData(product.toMap(), merge: true);
}
}

数据模型
ProductModel{
String id;
String name;
List<CategoryModel> categories

ProductModel.fromMap(Map<String, dynamic> data){
id = data['id'];
name= data['name'];
categories = data['categories']; // ??
}
Map<String, dynamic> toMap() {
return {
'id': id,
'name':name,
'categories': categories.map((i) => i.toMap()).toList(), // this worked well

};}}

CategoryModel{
String id;
String name;

CategoryModel.fromMap(Map<String, dynamic> data){
id = data['id'];
name= data['name'];
}
Map<String, dynamic> toMap() {
return {
'id': id,
'name':name,
};}}

最佳答案

如果data['categories']Map<String, dynamic>[]

您可以将数据映射到类别模型列表。

    categories = data['categories']
.map<CategoryModel>((value) => CategoryModel.fromMap(value))
.toList();

关于json - 如何获取带有对象列表的文档? -消防站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60420078/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com