2016-04-30 9 views
2

の「タイプは、」私は[email protected]に私のアプリを設定しようとしたが、私は店を使用してプロパティを読み取ることができません未定義

this.store.findAll("user"); 

を使用しようとするたびに私はいつもエラーがプロパティを読み取ることができませんと言ってます未定義の 'タイプ'。

ストア、アダプタ、モデル、およびサーバーも初期化しました。

アダプター/

import JSONAPIAdapter from 'ember-data/adapters/json-api'; 
export default JSONAPIAdapter.extend({ 
    defaultSerialiser: "-default" 
}); 

モデル/ user.jsの

import Model from 'ember-data/model'; 
import attr from 'ember-data/attr' 
export default Model.extend({ 
    "name": attr() 
}); 

とサーバ側は、それがエラーを取得

app.get("/users", function(req, res) { 
    res.send({"name": "Surya"}); 
}); 

のようなものですapplication.js

TypeError: Cannot read property 'type' of undefined 
at _pushInternalModel (store.js:1524) 
at push (store.js:1501) 
at finders.js:148 
at Object.Backburner.run (ember.debug.js:678) 
at _adapterRun (store.js:1733) 
at finders.js:145 
at tryCatch (ember.debug.js:53806) 
at invokeCallback (ember.debug.js:53821) 
at publish (ember.debug.js:53789) 
at ember.debug.js:32054 
+0

(あなたが実際に-default.jsとしてあなたのシリアライザを命名しない限り)がありタイプミスは、あなたのアダプタである、それは「defaultSerializer」ではない「defaultSerialiser」である必要があり、また、シリアライザ名は私には間違っているに見えなければなりません。デフォルトのシリアライザを使用しようとしている場合、アダプタで指定する必要はないと仮定します。しかし、あなたが提供しているレスポンスで判断すると、@ luxはあなたが実際にjsonapiを使いたいなら、ペイロードフォーマットを変更する必要があります。 –

+1

そして、あなたはjsonapi形式を返さず、RESTAdapter/RESTSerializer形式を返しています。あなたは単一のユーザーを返していますが、ユーザーの集まりを要求しました。 – Kingpin2k

答えて

1

あなたはJSONAPIシリアライザおよびアダプタを使用していますが、あなたの応答

{ 
    "user": { 
    "name": "Surya" 
    } 
} 

は有効なJSONAPI応答ではありません。それは

{ 
    "data": { 
     "type": "user", 
     "id": "0", 
     "attributes": { 
     "name": "Surya" 
     } 
    } 
} 
+0

申し訳ありませんが、私は単純なJSONとしてレスポンスを送信する必要があり、私はそのちょっとしたデータだけを持つことができます。しかし、私はこれも与えようとしました。しかし、それでも同じエラーがありました。 –

+0

次に、別のシリアライザ/アダプタを使用するか、独自のものを作成してください。 – Lux

+0

このタイプの応答にはRESTアダプタとシリアライザを使用する必要があります。これはEmberに含まれています。 – Senthe