how can i get the list products in my sub collection and add it to the data model i created.
I am trying to get all the products added to cart from a vendor..
here is the structure of my database
and here is the data code i am trying to do
class cartModel {
vendorCartModel? vendorCart;
List<productCartModel>? productsInCart;
cartModel();
cartModel.fromSnapshot(DocumentSnapshot snap){
vendorCart = vendorCartModel.fromSnapShot(snap);
productsInCart = ?????? (here is the part where i don't know what to do')
}
}
================
class vendorCartModel {
bool selected = false;
String? storeName;
String? uid;
String? userId;
String? vendorToken;
GeoPoint? storeLocation;
vendorCartModel();
vendorCartModel.fromSnapShot(DocumentSnapshot snap){
storeName = snap["storeName"];
uid = snap["uid"];
userId = snap["userId"];
vendorToken = snap["vendorToken"];
storeLocation = snap["storeLocation"];
}
}
==========================
class productCartModel {
bool selected = false;
String? name;
List<dynamic>? imgUrl;
String? uid;
String? vendorUid;
int? quantity;
double? sellingPrice;
double? sellerPrice;
double? oldPrice;
double? weight;
bool? shipping;
int? minOrder;
productCartModel();
productCartModel.fromSnapshot(DocumentSnapshot snap){
uid = snap["uid"];
vendorUid = snap["vendorUid"];
imgUrl = snap["imgUrl"];
name = snap["name"];
weight = snap["weight"];
sellingPrice = double.parse(snap["sellingPrice"].toString());
sellerPrice = double.parse(snap["sellerPrice"].toString());
oldPrice = double.parse(snap["oldPrice"].toString());
quantity = snap["quantity"];
minOrder = snap["minOrder"];
shipping = snap["shipping"];
}
}
================ here is my structure of database
============== this is my query
await _fStoreIns
.collection('cart')
.doc(vendorId).get().then((value){
cartModel = cartModel.fromSnapshot(value);
})
Thanks in advance.
First, we get the vendor's data and then the productsData and pass both to cartModel.fromSnapShot
method.
Use this query:
DocumentSnapshot<Map<String, dynamic>> vendorData =
await _fStoreIns.collection('cart').doc(vendorId).get();
QuerySnapshot<Map<String, dynamic>> productsData = await _fStoreIns
.collection('cart')
.doc(vendorId)
.collection('products')
.get();
cartModel = cartModel.fromSnapshot(vendorData, productsData);
Define your cartModel.fromSnapshot
as below:
cartModel.fromSnapshot(DocumentSnapshot vendorData, QuerySnapshot productsData) {
vendorCart = vendorCartModel.fromSnapShot(vendorData);
productsInCart = productsData.docs
.map((e) => productCartModel.fromSnapShot(e)).toList();
}