如何通过嵌套列表 firebase 过滤 order 以使用 rest 数据库实时 flutter App

how to filter orderby nested list firebase to flutter App with rest database realtime

我在嵌套列表中使用 firebase 数据库过滤器 orderBy seller_id,为什么结果为空?谢谢

:rules Firebase

var url = Uri.parse(
    'https://MeDatabase.firebasedatabase.app/orders.json?auth=$authToken&orderBy="list_produk/seller_id"&equalTo="$idUser"');

try {
  final response = await http.get(url);
  if (response.statusCode >= 400) {
    throw EasyLoading.showError('Cek Koneksi Internetmu!');
  }
  final extractData =
      convert.jsonDecode(response.body) as Map<String, dynamic>;
  print('inii orderan');
  print(extractData);
  if (extractData == null) {
    return _orders = [];
  }
} catch (e) {
  throw e;
}

您正在尝试对 list_produk/seller_id 属性.

上的每个订单进行索引和排序

但是我看你的JSON数据,订单下没有list_produk/seller_id属性。只有 list_produk/1/seller_id,大概 list_produk/0/seller_id。这些与您在 rules/query 中使用的不同,因此查询 returns 没有结果。

Firebase 实时数据库查询在单个平面节点列表上运行。您 order/filter 的值必须存在于每个直接子节点下的固定路径中。

因此在您的示例中,您可以搜索 id_user 上的所有订单,或者您可以搜索特定订单中的 seller_id 产品,但您无法搜索所有订单中的所有产品卖家。

换句话说:您当前的数据结构可以很容易地找到每个订单的产品和卖家,但是它并不能在所有用户中找到每个产品的订单。为此,您需要添加一个额外的数据结构,通常称为反向索引,该索引从每个 seller_id 映射到包含该卖家产品的订单。

有关这方面的更多信息,我建议查看:

  • Firebase Query Double Nested