Каков будет правильный способ хранения объектов в базе данных, чтобы упростить их последующее упорядочение?

У меня есть такой список

    {"ids": [
      {
        "id1": {
          "name": "name1",
          "lastname": "lastname1"
        }
      },
      {
        "id2": {
          "name": "name2",
          "lastname": "lastname2"
          }
      },
      {
        "id3": {
          "name": "name3",
          "lastname": "lastname3"
        }
      },
      {
        "id4": {
          "name": "name4",
          "lastname": "lastname4"
        }
      }
      ]
    }

Затем я извлекаю и отображаю это так:

    import {Component} from '@angular/core';
    import {AngularFire, FirebaseListObservable} from 'angularfire2';

    @Component({
      selector: 'app',
      templateUrl: `
      <ul>
        <li *ngFor="let id of ids | async">
        {{ id.name }}
        </li>
      </ul>
      `,
    })
    class AppComponent {
    ids: FirebaseListObservable<any>;
      constructor(af: AngularFire) {
        this.ids = af.database.list('/ids');
      }
    }

Результат:

name1
name2
name3
name4

Допустим, я хотел бы переупорядочить / переместить некоторые объекты, поэтому я получаю такой результат:

name3
name1
name2
name4

Что было бы хорошим способом структурировать мои объекты, чтобы легко достичь этого? Я мог бы добавить свойство order, обновить его и упорядочить запрос по свойству order.

    this.ids = af.database.list('/ids',{
          query: {
    orderByChild: 'order'
    }
    });

Или, может быть, я мог бы добавить предыдущий идентификатор ключа в качестве свойства, но как тогда отобразить список, принимая во внимание "предыдущее" свойство? Я выясняю, как этого добиться, чтобы избежать проблем с масштабируемостью в будущем.

1 ответ

Решение

Сначала вам нужно будет добавить свойство для хранения заказа.

Во-вторых, вы не должны сохранять эти данные в виде массива, так как Firebase сохраняет их как объект в любом случае. Вместо этого вы должны сохранить как объект.

Проверьте следующую ссылку для получения дополнительной информации.

https://firebase.googleblog.com/2014/04/best-practices-arrays-in-firebase.html

Итак, ваша база данных Firebase должна выглядеть следующим образом.

"ids": {
    "id1": {
        "name": "name1",
        "lastname": "lastname1",
        "order": 1
    },
    "id2": {
        "name": "name2",
        "lastname": "lastname2",
        "order": 2
    },
    "id3": {
        "name": "name3",
        "lastname": "lastname3",
        "order": 3
    },
    "id4": {
        "name": "name4",
        "lastname": "lastname4",
        "order": 4
    }
}

И вы должны запрашивать order имущество.

Другие вопросы по тегам