flutter - 如何使用颤振在 Firestore 中编写嵌套数组
问题描述
构建一个购物应用程序我在我的“用户”集合中添加了一个购物车项目。
在用户购买这些商品后,我想将这些购物车商品存储在其他集合“订单”中。但是当我试图将这些购物车物品存储在我的订单集合中时,firebase throws Invalid data. Nested arrays are not supported
。
我的错误是什么?
这是我的代码
onPressed: (){
//orderItem(cartItem);
getData() async {
return await FirebaseFirestore.instance.collection('users').where('id', isEqualTo: FirebaseAuth.instance.currentUser.uid).get();
}
getData().then((val){
if(val.docs.length>0){
//print(val.docs[0].data()['cart']);
// Map map = val.docs[0].data()['cart'];
var list = [val.docs[0].data()['cart']];
// map.entries.forEach((e) {
// list.add();
// });
// List items = [val.docs[0].data()['cart'].toList()];
FirebaseFirestore.instance.collection('orders').doc().set({
"userId": FirebaseAuth.instance.currentUser.uid,
"userName": FirebaseAuth.instance.currentUser.displayName,
"orders": FieldValue.arrayUnion([[val.docs[0].data()['cart']]]),
"price": cartController.totalCartPrice.value
});
}
else{
print("Not Found");
}
});
},
解决方案
我认为这个问题是微不足道的。您不小心将列表放入列表中。
"orders": FieldValue.arrayUnion([[val.docs[0].data()['cart']]]),
我认为你可以跳过一对[
所以你有这个:
"orders": FieldValue.arrayUnion([val.docs[0].data()['cart']]),
另外...如果val.docs[0].data()['cart']
是一个列表,您可能需要跳过另一对:
"orders": FieldValue.arrayUnion(val.docs[0].data()['cart']),
推荐阅读
- r - 我在数据集中有重复的 ID,并希望在数据列中保留 NA 数量最少的 ID
- javascript - 如果我运行 firebase serve,部分 JavaScript 文件不会执行
- python - 如何修复错误?TypeError: 不支持的操作数类型 -: 'tuple' 和 'int'
- java - JAVA:使用树形图方法获取对象的变量
- python - nltk.pos_tag 和 nltk.word_tokenize - 列表列表
- mysql - 仅返回多个重复父 ID 的子表上最后插入的父 ID
- flutter - 相机预览显示拉伸的图像,当高度降低时颤动
- python - 如何在 streamlit 中获得两个月年日期之间的差异?
- python - TypeError:“int”对象在不同大小的列表上不可下标
- snowflake-cloud-data-platform - 雪花任务 - 可视化层次结构