2016-03-27 11 views
0

inanıyorum inanıyorum her ikisi de öğrenmek için ember ve hapi kullanan bir uygulama oluşturmaya başladı.Ember app API okuma değil, hapijs kullanarak Ben benim API iyi bir imber sorunu

Aşağıdaki snippet'leri yapıştırdım ancak orada sahip olduğum şeyi görüntülemekle ilgileniyorsanız, buradaki repoda hem sunucu hem de ember uygulaması var, https://github.com/jrutishauser/contactsApp.

benim hapi sunucusu

adaptörler/uygulama,

http://localhost:3000/api/contacts

benim kor uygulaması içeren altında bu dosyaları vardır benim sql sunucusuna

{"data":[{"id":1,"first_name":"Joe","middle_initial":null,"last_name":"Smith","title":null,"phone_number":"(555) 111-2222","email":"[email protected]","street_address":"123 Some Street","city":"Salt Lake City","state":"Utah","zip_code":"84111","created_at":1456988902625,"updated_at":1456988902625},{"id":2,"first_name":"John","middle_initial":null,"last_name":"Jones","title":null,"phone_number":"(555) 222-3333","email":"[email protected]","street_address":"1432 Another Street","city":"Montgomery","state":"Alabama","zip_code":"99291","created_at":1456988902625,"updated_at":1456988902625},{"id":3,"first_name":"Joe","middle_initial":null,"last_name":"Smith","title":null,"phone_number":"(555) 111-2222","email":"[email protected]","street_address":"123 Some Street","city":"Salt Lake City","state":"Utah","zip_code":"84111","created_at":1457588539468,"updated_at":1457588539468},{"id":4,"first_name":"John","middle_initial":null,"last_name":"Jones","title":null,"phone_number":"(555) 222-3333","email":"[email protected]","street_address":"1432 Another Street","city":"Montgomery","state":"Alabama","zip_code":"99291","created_at":1457588539468,"updated_at":1457588539468}]} 

aşağıda gösteriliyor var. js,

1 import DS from 'ember-data'; 
    3 export default DS.JSONAPIAdapter.extend({ 
    4 namespace: 'api',   
    5 host: 'http://localhost:3000' 
    6 }); 

modelleri/contact.js,

1 import DS from 'ember-data'; 

    3 export default DS.Model.extend({ 
    5 firstName: DS.attr('string'), 
    6 lastName: DS.attr('string'), 
    7 middleInitial: DS.attr('string'), 
    8 title: DS.attr('string'), 
    9 phoneNumber: DS.attr('string'), 
    10 email: DS.attr('string'), 
    11 streetAddress: DS.attr('string'), 
    12 city: DS.attr('string'), 
    13 state: DS.attr('string'), 
    14 zipCode: DS.attr('string'), 
    15 createdAt: DS.attr('date'), 
    16 updatedAt: DS.attr('date') 
    17 }); 

yolları/Ben de serializers/application.js altında Bunu ayarlamak ama normalleştirmek için ihtiyacım yok çünkü onun gerekli dont düşünmek

1 import Ember from 'ember'; 
    2        
    3 export default Ember.Route.extend({ 
    4  model: function(){  
    5   return this.store.findAll('contact'); 
    6  }      
    7 }); 

contacts.js şey

1 import DS from 'ember-data'; 
    2 
    3 export default DS.JSONAPISerializer.extend({ 
    4 primaryKey: 'id', 
    5 serializeId: function(id) { 
    6  return id.toString(); 
    7 } 
    8 }); 

şablonları/contacts.hbs

1 <ul> 
    2 {{#each contact in model}} 
    3  <li>{{#link-to 'contact' contact}}{{contact.firstName}}{{/link-to}}</li> 
    4 {{/each}} 
    5 </ul> 
    6 
    7 {{outlet}} 

Tüm Im'larım, şu anda api'den gelen listeyi göstermek için rehber rotasıdır, henüz bununla işim bitmedi ve bir süredir burada kaldım. Varsayılan olarak Kor Verilerini kullanıyorsanız o seri ve kayıtları serisini JSONAPISerializer kullanır ben vardır olsun

konsol hataları

ember.debug.js:28590 Error while processing route: contacts.index Assertion Failed: You may not set `id` as an attribute on your model. Please remove any lines that look like: `id: DS.attr('<type>')` from (unknown mixin) Error: Assertion Failed: You may not set `id` as an attribute on your model. Please remove any lines that look like: `id: DS.attr('<type>')` from (unknown mixin) 

ve

Error: Assertion Failed: Encountered a resource object with an undefined type (resolved resource using [email protected]:application:) 

cevap

0

.

JSONApiSerializer, http://jsonapi.org/ teknik özelliklerini desteklemektedir.

Bunun çalışması için verileri sunucudan JSON API spesifikasyonuna göre geri göndermeniz ya da ember uygulamanızdaki seri hale getiricideki verileri normalleştirmeniz gerekir.

Bu http://emberjs.com/api/data/classes/DS.JSONAPISerializer.html

Ayrıca buradan http://jsonapi.org/implementations/#client-libraries-javascript spec uygulamak eklentileri kontrol edebilirsiniz açıklar Kor kılavuzlarında Örneğin bakabilirsiniz. hapi çerçevesinin (https://github.com/wraithgar/hapi-json-api) bir eklentisi olduğu için size yardımcı olabileceğini düşünüyor.

+0

Bu kaynakları paylaştığınız için teşekkürler Bugün bir şans elde ettiğimde bunların üzerinden geçeceğim ve umarım hata buluyorum. – imnothardcore

+0

@imnothardcore Örnek aldığınız ikinci hatanın nedeni, model için model tanımlamanız gerektiğidir.Yani her bir kişi 'type = 'contact'' yanıtında olmalıdır. Ayrıca, tüm öznitelikler, öznitelikler 'karma'sında yanıt olarak tanımlanmalıdır. Yukardaki bağlantıda, ember kılavuzlarından, yükün nasıl görünmesi gerektiği biraz daha iyi bir örnek görebilirsiniz. – Altrim

+0

teşekkürler, tüm konsol hatalarımı çözdüm ve ember chrome eklentisini kullanarak dizimi 4 nesne ile görebiliyorum. Görünüşe bakılırsa, ember modelimde/şablonumda bir hata var. – imnothardcore