Как получать / извлекать элементы из базы данных Firebase в реальном времени - PullRequest
1 голос
/ 27 мая 2020

Я новичок в программировании, начал с Flutter, следую некоторым учебникам, постепенно прогрессирую.

Я добавляю данные в базу данных Firebase Real Time с помощью этого URL:

Все элементы сохраняются по заказам> Unique-uid-Stirng > Key> Fields

Я могу получить один элемент с этим URL:

Как я могу получить все записи сохранены под разными uid, пробовали эти URL-адреса:

Ниже первых двух URL-адресов извлечение только зарегистрированных пользователей Поля

Ищем решение, подобное приведенным ниже URL-адресам:

Или есть какой-либо альтернативный способ, где я могу добиться того же (Отредактировано: ищу только настоящие решения для баз данных).

Буду признателен за ваши ответы. Спасибо.

1 Ответ

0 голосов
/ 30 мая 2020
final db = FirebaseDatabase.instance.reference().child("orders");
db.orderByKey().once().then((DataSnapshot snapshot){
  var uids = snapshot.value.keys;
  var data = snapshot.value;
    for (var key in uids) {
      var newList = data[key];
      print(newList);
    }

Приведенный выше код решил проблему, которую я задал альтернативным способом.

Ниже приведен полный код для получения заказа от имени администратора для изменения статуса заказа:

Future<void> fetchAndSetAdminOrders() async {
List<OrderItem> orderList = [];
    final db = FirebaseDatabase.instance.reference().child("orders");
db.orderByKey().once().then((DataSnapshot snapshot){
  var uids = snapshot.value.keys;
  var data = snapshot.value;
    for (var key in uids) {
      var newList = data[key];
      print(newList);



  newList.forEach((orderId, orderData) {
    orderList.add(
      OrderItem(
        id: orderId,
        amount: orderData['amount'],
        status: orderData['status'],
        dateTime: DateTime.parse(orderData['dateTime']),
        products: (orderData['products'] as List<dynamic>)
            .map((item) => CartItem(
          id: item['id'],
          price: item['price'],
          quantity: item['quantity'],
          title: item['title'],
        ))
            .toList(),
      ),
    );

  });
    }
  _orders = orderList.reversed.toList();
  notifyListeners();
});}

Работает нормально и отображает все заказы с их статусом, за исключением нескольких ошибок, как показано ниже.

E/flutter (10256): A Orders was used after being disposed.
E/flutter (10256): Once you have called dispose() on a Orders, it can no longer be used.
...