2016-03-31 22 views
1

'u dahil etmelisiniz Bir şehir gösterge panosunun bir End of-degree projesi yapıyorum. Ben usin ediyorum: - PostgreSQL DB olarak - node.js + Express.js + Massive.js sunucusuna olarak - ember.jsRota işlenirken hata oluştu: index Onaylama Başarısız: Bir 'id'

Aslında müşteri uygulaması gibi, ben veri alabilir diye test ediyorum

Error while processing route: index Assertion Failed: You must include an 'id' for poblacio in an object passed to 'push' Error: Assertion Failed: You must include an 'id' for poblacio in an object passed to 'push'

Bunlar benim dosyalar şunlardır::

server.js (sadece bir parça Ember'ın için DB, ama gelecek hata alıyorum (Ben burada buldum hemen her çözüm denedim))

router.route('/poblacios') 
     .get(function(request, response) { 
      db.poblacio.find({}, function(err, res){ 
       response.json(res); 
      }); 
     }); 

app.use('/api/v1/', router); 

adaptörler//

import DS from 'ember-data'; 

export default DS.JSONAPIAdapter.extend({ 
    namespace: 'api/v1' 
}); 

yol application.js application.js

import Ember from 'ember'; 

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

model/poblacio.js

import DS from 'ember-data'; 

export default DS.Model.extend({ 
    anny: DS.attr('number'), 
    districte: DS.attr('number'), 
    barri: DS.attr('string') 
}); 

serializers/poblacio.js

import DS from 'ember-data'; 

export default DS.JSONAPISerializer.extend({ 
    primaryKey: 'id', 
    normalizeFindAllResponse(store, type, payload) { 
     return { 
      data: { 
       id: payload.id, 
       type: type.modelName, 
       attributes: { 
        anny: payload.anny, 
        districte: payload.districte, 
        barri: payload.barri, 
       }    
      } 
     }; 
    } 
}); 

localhost: bir kimlik için birlikte ilçe, mahalle ve yıla göre 0 95+ yaşındaki kadınlar ve erkekler sayısını döndürür 3000/API/v1/poblacios her sıra:

[{"id":1,"anny":2015,"districte":1,"barri":"1. el Raval","donesanys0":206,"donesanys1":212,"donesanys2":206,"donesanys3":247.... 
{"id":2,"anny":2015,"districte":1,"barri":"2. el Barri Gotic","donesanys0":48,"donesanys1":53... 
.... 
{"id":657,"anny":2007,"districte":10,"barri":"73. la Verneda i la Pau","donesanys0":103,"donesanys1":118,"donesanys2":123,"donesanys3":107... 

Yardımlarınız için teşekkürler!

+0

http://stackoverflow.com/questions/25532703/i-get-assertion-failed-you-must-include-an-id-in-a-hash-passed-to-push-w –

cevap

1

JSONAPIAdapter'u kullanırsanız, JSON API spec numaralı telefonu izlemeniz gerekir.

JSON yukarıdaki, spec göre olması gereken bir şey benzer:

{ 
    data: [ 
    ... collection of resource objects 
    ] 
} 

Ve bu sorun, senin yük dolayısıyla geçerli bir çözüm hattı üzerinde olacağını, bir dizidir:

import DS from 'ember-data'; 

export default DS.JSONAPISerializer.extend({ 
    primaryKey: 'id', 
    normalizeFindAllResponse(store, type, payload) { 
     return { 
      data: payload.map((el) => { 
       return { 
       id: el.id, 
       type: type.modelName, 
       attributes: { /* the attributes you need from el */ } 
       } 
      }) 
     }; 
    } 
}); 

Bu yardımcı olur umarım.

+0

Teşekkürler! Gerçekten işe yaradı! Ama bence API yanıtını değiştirmem gerekiyor. Çok teşekkür ederim! – ElXaxe

İlgili konular