0

モデルのレコードが見つかりません

残り火バージョン:

DEBUG: -------------------------------
DEBUG: Ember      : 1.0.0
DEBUG: Ember Data : 1.0.0-beta.2 
DEBUG: Handlebars : 1.0.0 ember.js
DEBUG: jQuery     : 1.9.1 ember.js
DEBUG: ------------------------------- 

モデル:

App.Concert = DS.Model.extend({
    tour_id: DS.attr(),
    tickets: DS.attr()
});

発見:

this.get("store").find("concert", {tour_id: 1}).then(function(result) {
            console.log("--------------");
            console.log(result.content.length);
            console.log("--------------");
        }, function(error) {
            console.log("broken");
        });

コンソール:

------------- 
length: 0 
-------------- 

プロパティでモデルのレコードを見つけることができません。誰でも助けることができますか?tour_id: 1 のレコードが存在することを知っています

4

2 に答える 2

1

Edu は実際には部分的に正しいですが (以下を参照)、レコードが返されない本当の理由は、API が返す形式にある可能性が最も高いです。Ember Data は、期待されるデータの種類とその構造について非常に厳密です。tour_idofを使用して API にコンサートのクエリを実行すると1、応答は次のようになります。ルート オブジェクトは複数形のモデル名であり、キーはコンサートの配列であることに注意してください。

{
  "concerts": [
    {
      "id": 1,
      "tour_id": 1,
      "name": "cool concert"
    },
    {
      "id": 5,
      "tour_id": 1,
      "name": "awesome concert"
    }
  ]
}

Edu のコメントについてですが、ストアのfindメソッドを呼び出すと、Ember Data は通常の検索を実行しません。内部では、findQueryが呼び出され、 のインスタンスを返しますDS.RecordArray。これは通常の JavaScript 配列ではないため、Ember の動作と配列の処理方法を尊重する必要があります。

DS.RecordArrayEmber ガイドを読み進めることをお勧めします。また、Ember Data を使用する予定がある場合は、そのソースを調査するという考えに恐れを抱くべきではありません。Ember Data は野心的なプロジェクトであり、ドキュメントはまだ開発中です。したがって、Ember Data のソースは、最も重要な情報源です。

于 2013-12-20T19:35:56.790 に答える
0

ゲッターを使用してみてください...

console.log(result.get('length'));
于 2013-10-08T11:02:37.787 に答える