2017-02-28 40 views
0

私のバックエンドに私の第一モデルをフックし、エンバーデータのfindAllのを(呼び出すときに、次のエラーを取得しています)エンバーデータのfindAll()の原因「はTypeError:未定義のプロパティを読み取ることができません 『タイプ』を」

TypeError: Cannot read property 'type' of undefined 

ルート、

import Ember from 'ember'; 

export default Ember.Route.extend({ 
    model() { 
     this.store.findAll('restaurant'); 
    } 
}); 

モデル、

import DS from 'ember-data'; 

export default DS.Model.extend({ 
    name: DS.attr() 
}); 

私はエンバーは私のローカルサーバーとrに当たっていることがわかります適切に正しいURLからJSONをフォーマットしeturning、

{ 
    "restaurants": { 
     "id":1, 
     "name":"Restaurant Name" 
    } 
} 

は、私はこれについて同様の質問を見てきましたが、それは通常、不適切にフォーマットJSONに関係しています。あなたのデータはエンバーデータがどのようにバックエンドの商品データのフォーマット変更せずに、あなたのニーズに合うようにするには、以下のように

{ 
    "data": { 
    "id": "1", 
    "type": "restaurants, 
    "attributes": { 
     "name": "Name" 
    } 
    } 
} 

を何かになりますので、使用

+1

JSONが適切にフォーマットされますが、多分シリアライザはrestauranstの配列を期待: '{"レストラン:[{}]} 'に' findAll' – bgs

+0

が、私はこれを試してみました、それはまだ動作しません。また、ドキュメントには単一のオブジェクトがあると書かれています。http://emberjs.com/api/data/classes/DS.RESTAdapter.html#toc_object-root –

+3

デフォルトでは、JSONAPIAdapterとシリアライザを使用します。このJsonが必要な場合は、適切なアダプタとシリアライザを手動で選択する必要があります – Lux

答えて

2

デフォルトのデータ形式エンバーデータはJSON APIです。 Emberデータのリクエストを適切なリクエストに転送するために使用する独自のアダプタを追加できます。

https://guides.emberjs.com/v2.6.0/models/customizing-adapters/

+0

あなたは正しいですか?私は何とかemberがここで期待していたフォーマット、http://emberjs.com/api/data/classes/DS.RESTAdapter.htmlに関する誤ったドキュメントを見つけました。私はこれがオプションのアダプタだと思います。私は彼らがなぜこのアダプターをサポートしているのか不思議です。 –

1

、下記のリンクでアダプタについてもっと読むあなたのJSONファイルは、REST APIレスポンスのようにフォーマットが、デフォルトでエンバーはJSONAPIAdapterを使用しています。

まずJSONを修正し、それが配列を返す必要があります:

[{ 
    "id":1, 
    "name":"Restaurant Name" 
}] 

次にアダプターを変更し、シリアライザを設定します。

// in app/adapters/application.js 

import Ember from 'ember'; 
import DS from 'ember-data'; 

export default DS.RESTAdapter.extend({ 
}) 


// in app/serializers/application.js 

import Ember from 'ember'; 
import DS from 'ember-data'; 

export default DS.JSONSerializer.extend({ 
}) 

は続きを読む:

Customizing adapters

JSONAPIAdapter

RESTAdapter

+1

application.jsのDS.RESTSerializerを拡張することを検討する – kumkanillam

関連する問題