Angularfire:プロパティの1つからアイテムにアクセスするにはどうすればよいですか?

マルコズ

私のFirebaseデータは次のように整理されています。

+ myappname
  + customers
    + -JV2NQv3GmoM81zdUfTe
      + name: "Mary"
      + age: "24"
      + ...
    + -JV2N9NnItCfz5vB04RS
      + name: "John"
      + age: "32"
      + ...
    + ...
  + ...

名前で顧客を取得するにはどうすればよいですか?
名前は一意であることが保証されています。
これは私のカスタマーサービスです。現在は次のとおりです。

app.factory('Customer', function ($firebase, FIREBASE_URL) {
  var ref = new Firebase(FIREBASE_URL + 'customers');
  var customers = $firebase(ref);

  var Customer = {
    all: customers,
    create: function (customer) {
      return customers.$add(customer).then(function (ref) {
        var customerId = ref.name();
        return customerId;
      });
    },
    set: function(customerId, customer) {
      return customers.$child(customerId).$set(customer);
    },
    find: function (customerId) {
      return customers.$child(customerId);
    },
    findByName: function (customerName) { // TODO...
    },
    delete: function (customerId) {
      var customer = Customer.find(customerId);
      customer.deleted = true;
      customer.$on('loaded', function () {
        customers.$child(customerId).$set(customer);
      });
    }
  };
  return Customer;
});

findByName()の呼び出しごとにすべての顧客をスキャンする必要がありますか?
それとも、「セカンダリインデックス」のようなものを作成する必要がありますか?
アドバイスをお願いします、私は始めたばかりです... :-(

マルコズ

加藤の指摘とフランク・ヴァン・パッフェレンの提案のおかげで、私はついに自分の問題を解決しました。
Firebaseに「index」「customersByName」を追加しました(「ディスク容量は安いが、ユーザーの時間は「Firebase」のモットーではないことを思い出してください... :-))。
このソリューションはより一般的な用途であると思うので、参照された回答の指示には従いませんでした。複数の「インデックス」に対応します...
他の人に役立つことを願って、ここに投稿したいと思います
コメントをお願いします:このソリューションには潜在的な欠点がありますか?全体として、一部のユースケースでは推奨されるソリューションですか?

app.factory('Customer', function ($firebase, FIREBASE_URL) {
  var ref = new Firebase(FIREBASE_URL + 'customers');
  var customers = $firebase(ref);
  var refByName = new Firebase(FIREBASE_URL + 'customersByName');
  var customersByName = $firebase(refByName);

  var Customer = {
    all: customers,
    create: function (customer) {
      return customers.$add(customer).then(function (ref) {
        var customerId = ref.name();
        customersByName.$child(customer.name).$set(customerId);
        return customerId;
      });
    },
    set: function(customerId, customer) {
      var oldname = customers.$child(customerId).name;
      if (customer.name !== oldname) {
        customersByName.$remove(oldname);
      }
      customersByName.$child(customer.name).$set(customerId);
      return customers.$child(customerId).$set(customer);
    },
    find: function (customerId) {
      return customers.$child(customerId);
    },
    findByName: function (customerName) {
      return customersByName.$child(customerName);
    },
    delete: function (customerId) {
      var customer = Customer.find(customerId);
      customer.deleted = true;
      customer.$on('loaded', function () {
        customersByName.$remove(customer.name);
        customers.$child(customerId).$set(customer);
      });
    }
  };

  return Customer;
});

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

スクリプトからUnityスプライトのPixelsToUnitsプロパティにアクセスするにはどうすればよいですか

分類Dev

HttpErrorResponseの特定のプロパティにアクセスするにはどうすればよいですか?

分類Dev

collectionViewのセルから1つのアイテムのみをリロードするにはどうすればよいですか?スウィフト4

分類Dev

composable内の@Composableプロパティにアクセスするにはどうすればよいですか?

分類Dev

PageObject要素のWatirプロパティにアクセスするにはどうすればよいですか?

分類Dev

Objectプロパティの名前にアクセスするにはどうすればよいですか?

分類Dev

html要素のプロパティにアクセスするにはどうすればよいですか?

分類Dev

ボタンライブで別のフォームのプロパティにアクセスするにはどうすればよいですか?

分類Dev

Androidの別のアクティビティから1つのアクティビティのコンポーネント(タイムピッカーなど)にアクセスするにはどうすればよいですか?

分類Dev

アルゴリアのインデックスと検索プロパティにアクセスするにはどうすればよいですか?

分類Dev

sqlalchemyで自己参照プロパティにアクセスするにはどうすればよいですか?

分類Dev

クラス外からオブジェクト内の拡張プロパティにアクセスするにはどうすればよいですか?

分類Dev

呼び出しプロパティにアクセスするにはどうすればよいですか?

分類Dev

exiv2 ImageSizeプロパティにアクセスするにはどうすればよいですか?

分類Dev

Java クラスのマネージド Bean からプロパティ値にアクセスするにはどうすればよいですか?

分類Dev

ネイティブUIコンポーネントのstyleプロパティにアクセスするにはどうすればよいですか?

分類Dev

配列内のオブジェクトからプロパティにアクセスするにはどうすればよいですか?

分類Dev

cordovaプラグインのサービス内からアクティビティにアクセスするにはどうすればよいですか?

分類Dev

Spring Conditionからファイルプロパティにアクセスするにはどうすればよいですか?

分類Dev

ネストされたセットの各グループから1つのアイテムを取得するにはどうすればよいですか

分類Dev

これらのC#オブジェクトのプロパティにアクセスするにはどうすればよいですか?

分類Dev

Angular操作からAPI呼び出しの「応答」のプロパティにアクセスするにはどうすればよいですか?

分類Dev

Vue jsのメソッドから配列内のプロパティにアクセスするにはどうすればよいですか?

分類Dev

Get-EC2SecurityGroupのIpPermissionsプロパティのプロパティにアクセスするにはどうすればよいですか?

分類Dev

子テスト内でJestテスト環境のクラスプロパティにアクセスするにはどうすればよいですか?

分類Dev

Go WebAssemblyからDOM要素のプロパティにアクセスするにはどうすればよいですか?

分類Dev

ApiControllerのActionFilterAttributeからプロパティにアクセスするにはどうすればよいですか?

分類Dev

Middleman 4の記事レイアウトデータプロパティにアクセスするにはどうすればよいですか?

分類Dev

名前を知らずにコンポーネントのプロパティにアクセスするにはどうすればよいですか?

Related 関連記事

  1. 1

    スクリプトからUnityスプライトのPixelsToUnitsプロパティにアクセスするにはどうすればよいですか

  2. 2

    HttpErrorResponseの特定のプロパティにアクセスするにはどうすればよいですか?

  3. 3

    collectionViewのセルから1つのアイテムのみをリロードするにはどうすればよいですか?スウィフト4

  4. 4

    composable内の@Composableプロパティにアクセスするにはどうすればよいですか?

  5. 5

    PageObject要素のWatirプロパティにアクセスするにはどうすればよいですか?

  6. 6

    Objectプロパティの名前にアクセスするにはどうすればよいですか?

  7. 7

    html要素のプロパティにアクセスするにはどうすればよいですか?

  8. 8

    ボタンライブで別のフォームのプロパティにアクセスするにはどうすればよいですか?

  9. 9

    Androidの別のアクティビティから1つのアクティビティのコンポーネント(タイムピッカーなど)にアクセスするにはどうすればよいですか?

  10. 10

    アルゴリアのインデックスと検索プロパティにアクセスするにはどうすればよいですか?

  11. 11

    sqlalchemyで自己参照プロパティにアクセスするにはどうすればよいですか?

  12. 12

    クラス外からオブジェクト内の拡張プロパティにアクセスするにはどうすればよいですか?

  13. 13

    呼び出しプロパティにアクセスするにはどうすればよいですか?

  14. 14

    exiv2 ImageSizeプロパティにアクセスするにはどうすればよいですか?

  15. 15

    Java クラスのマネージド Bean からプロパティ値にアクセスするにはどうすればよいですか?

  16. 16

    ネイティブUIコンポーネントのstyleプロパティにアクセスするにはどうすればよいですか?

  17. 17

    配列内のオブジェクトからプロパティにアクセスするにはどうすればよいですか?

  18. 18

    cordovaプラグインのサービス内からアクティビティにアクセスするにはどうすればよいですか?

  19. 19

    Spring Conditionからファイルプロパティにアクセスするにはどうすればよいですか?

  20. 20

    ネストされたセットの各グループから1つのアイテムを取得するにはどうすればよいですか

  21. 21

    これらのC#オブジェクトのプロパティにアクセスするにはどうすればよいですか?

  22. 22

    Angular操作からAPI呼び出しの「応答」のプロパティにアクセスするにはどうすればよいですか?

  23. 23

    Vue jsのメソッドから配列内のプロパティにアクセスするにはどうすればよいですか?

  24. 24

    Get-EC2SecurityGroupのIpPermissionsプロパティのプロパティにアクセスするにはどうすればよいですか?

  25. 25

    子テスト内でJestテスト環境のクラスプロパティにアクセスするにはどうすればよいですか?

  26. 26

    Go WebAssemblyからDOM要素のプロパティにアクセスするにはどうすればよいですか?

  27. 27

    ApiControllerのActionFilterAttributeからプロパティにアクセスするにはどうすればよいですか?

  28. 28

    Middleman 4の記事レイアウトデータプロパティにアクセスするにはどうすればよいですか?

  29. 29

    名前を知らずにコンポーネントのプロパティにアクセスするにはどうすればよいですか?

ホットタグ

アーカイブ