2017-02-28 47 views
0

鉤住我的第一個模型,我的後端和我得到調用灰燼數據的的findAll()時出現以下錯誤灰燼數據的findAll()導致「類型錯誤:無法讀取未定義的屬性‘類型’」

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 eturning格式正確的JSON,

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

我已經看到了這個類似的問題,但它通常與格式不正確的JSON做。使用

+1

JSON格式正確,但也許串行預計restauranst數組:'{「餐廳:[{}]}''上findAll' – bgs

+0

我已經試過這一點,它仍然無法正常工作。另外文檔說你可以有一個單獨的對象,http://emberjs.com/api/data/classes/DS.RESTAdapter.html#toc_object-root –

+3

默認情況下,你使用JSONAPIAdapter和serializer。如果你想要這個Json,你應該手動選擇使用正確的適配器和序列化器 – Lux

回答

2

默認的數據格式灰燼數據是JSON API,因此你的數據看起來應該像下面,

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

在不做出改變灰燼數據滿足您的需求後端產生的數據是如何格式。您可以添加您自己的適配器,該適配器用於將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

相關問題