flutter - 使用firestore和flutter从子集合中查询特定文档
问题描述
我要做的是使用“文档 ID”查询特定文档。但是查询为空。这是我的代码。
void getEquipDetail() async {
await _firestore
.collection('users')
.document(_userUid)
.collection('equipment')
.document(documentID)
.get()
.then((DocumentSnapshot ds) {
equipName = ds.data['equip_name'];
print(equipName);
});
}
当我将“设备”作为根级集合时,这可以正常工作,但是由于将其设为“用户”的子集合,因此我无法查询特定文档。
这是当前的数据库结构 -collection (users) * root level -document (userid) -collection(equipment) -document (equipment documents) * 这是我试图查询的
这是返回的错误
[VERBOSE-2:ui_dart_state.cc(148)] Unhandled Exception: NoSuchMethodError: The method '[]' was called on null.
Receiver: null
Tried calling: []("equip_name")
#0 Object.noSuchMethod (dart:core-patch/object_patch.dart:51:5)
#1 _EquipmentDetailScreenState.getEquipDetail.<anonymous closure> (package:simmanager/screens/equip_detail_screen.dart:52:26)
#2 _rootRunUnary (dart:async/zone.dart:1132:38)
#3 _CustomZone.runUnary (dart:async/zone.dart:1029:19)
#4 _FutureListener.handleValue (dart:async/future_impl.dart:137:18)
#5 Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:678:45)
#6 Future._propagateToListeners (dart:async/future_impl.dart:707:32)
#7 Future._completeWithValue (dart:async/future_impl.dart:522:5)
#8 _AsyncAwaitCompleter.complete (dart:async-patch/async_patch.dart:30:15)
#9 _completeOnAsyncReturn (dart:async-patch/async_patch.dart:288:13)
#10 DocumentReference.get (package:cloud_firestore/src/document_reference.da<…>
这是可以正常工作的代码(它用于物品而不是设备)
void getItemDetail() async {
await Firestore.instance
.collection('items')
.document(widget.item.document)
.get()
.then((DocumentSnapshot snapshot) {
itemDetails = snapshot.data;
itemName = snapshot['item_name'];
itemNum = snapshot['item_num'.toString()];
itemDesc = snapshot['item_desc'];
itemLoc = snapshot['item_location'];
itemQty = snapshot['item_qty'.toString()];
itemUom = snapshot['item_uom'];
itemMfr = snapshot['item_mfr'];
itemStock = snapshot['out_of_stock'];
lastEditDate = snapshot['edit_date'];
createDate = snapshot['create_date'];
imageURL = snapshot['image_url'];
解决方案
您在第一个示例中的代码与第二个示例中的代码并不真正匹配。请仔细比较。对于第一个示例,您的意思是说:
equipName = ds['equip_name'];
推荐阅读
- python - 从类对象中删除数据
- scala - AWS Glue Scala,输出一个带分区的文件
- c++ - 我该如何围绕这个对概念和不完整类型的限制进行设计?
- flutter - 我正在尝试反转 dart 中的列表,但出现错误。怎么修?
- python - 在同一 IP 中为两个不同的 Telegram 帐户使用两个 Telethon 脚本时是否存在任何潜在问题?
- javascript - 从导入的样式表获取根上的所有 CSS 变量
- vue.js - 如何结合插入()和动态指令vue?
- aws-api-gateway - 转换请求正文但没有头 api 网关 aws
- javafx - “标签”的 JavaFX addRow 字体大小
- javascript - 为什么我的网站在移动设备上左对齐