【发布时间】:2021-03-27 09:08:40
【问题描述】:
当我在我的 Flutter 应用中使用 Cloud Firestore 时,发生了奇怪的异常。
已编辑
这是我的代码:
Stream<List<Product>> productsStream(int id) async* {
final k = _db
.collection('products')
.where('category_id', isEqualTo: id)
.where('stock', isGreaterThanOrEqualTo: 1)
.orderBy('order')
.snapshots();
yield* k.map((event) => event.docs
.map((e) => Product.fromJson(
e.data(),
))
.toList());
在这里我想要实现的是检查产品是否有库存,然后然后在我的products 集合中按order 字段按升序订购产品。
但是我收到了这个奇怪的错误:
例外: 'package:cloud_firestore/src/query.dart':断言失败:第 421 行 pos 16:'field == orders[0][0]':初始 orderBy() 字段 '[[FieldPath([order]), false当调用不等式运算符时,]][0][0]' 必须与 where() 字段参数 'FieldPath([stock])' 相同。
有什么解决办法?
【问题讨论】:
-
这能回答你的问题吗? Firestore multiple range query
-
@SimonSot 不,我认为不是。
-
这不是什么奇怪的错误 - 根据您的代码,它是正确的,并在 Firestore 文档Order Limitations 中进行了介绍=),您的第一个订单必须在同一字段中,因此您必须将 orderBy 更改为“stock”以消除错误。
-
@Jay 奇怪的是,我的意思是我不清楚错误,因为我是 FB 的新手。感谢您的澄清。我知道如果我将
orderBy('order')更改为orderBy('stock'),它将得到修复。但我想要实现的是同时检查库存中的产品数量,然后使用我的products集合中的order字段按升序订购产品。我怎样才能做到这一点?你能帮忙吗?
标签: firebase flutter dart google-cloud-firestore