2016-06-06 11 views
0

Ich mache eine Anfrage an eine 3. API durch meine Backend. Die API gibt ein Array von Ereignissen an mein Frontend zurück und ich habe Probleme, es im Ember DS zu speichern. Die Route für meine API-Anfrage ist ereignisreich und die Route/das Modell, für das ich ein Ereignis erstellen möchte, ist ereignisreich. Ich nenne:bekomme "Speicher" ist in meinem Adapter undefined

this.get('store').createRecord('eventful-event', concert)

in meinem ereignisreich Adapter und erhalten, dass 'Store' nicht definiert ist. Hier ist mein Code für meine erlebnisreichen Route:

import Ember from 'ember'; 

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

    data : {}, 

    ajax: Ember.inject.service(), 

    actions: { 
    searchForEvents (data) { 
     let eventful = this.get('store').createRecord('eventful', data); 
     return eventful.save(); 
     // .then(() => this.transitionTo('search-results')); 
     // return this.get('store').findAll('eventful'); 
     // let something = this.get('store').findAll('eventful'); 
     // console.log('something:', something); 
     // return eventful.save(); 
    } 
    } 
}); 

und mein ereignisreich Adapter:

import ApplicationAdapter from 'ga-wdi-boston.event-bookmarker/application/adapter'; 
import Ember from 'ember'; 

export default ApplicationAdapter.extend({ 
    ajax: Ember.inject.service(), 

    createRecord (store, type, record) { 
    let serialized = this.serialize(record, { includeId: true}); 
    let data = { serialized }; 
    let dataToSend = {'keywords': record.record.keywords, 'location': record.record.location }; 
    return this.get('ajax').request('/eventful', { 
     method: 'POST', 
     data: dataToSend, 
    }).then((events) => { 
     events['eventful-event'].forEach(function(concert){ 
     this.get('store').createRecord('eventful-event', concert); 
     }); 
    }); 
    } 
}); 

Diese forEach ist, wo der Fehler ausgelöst wird. Ich bin neu zu ember, also entschuldige ich mich, wenn ich etwas Einfaches übersehe, oder wenn meine Annäherung nicht richtig ist. Jeder Rat oder jede Hilfe wäre sehr willkommen.

Setzen Sie einfach einen Debugger ein. "Dies" im Adapter ist nicht definiert.

Antwort

2

Ich glaube Kontext ist dein Problem. Versuchen Sie store (Argument der Adapter-Methode) statt this.get('store') innerhalb lokaler Funktion:

createRecord (store, type, record) { 
    let serialized = this.serialize(record, { includeId: true}); 
    let data = { serialized }; 
    let dataToSend = {'keywords': record.record.keywords, 'location': record.record.location }; 
    return this.get('ajax').request('/eventful', { 
     method: 'POST', 
     data: dataToSend, 
    }).then((events) => { 
     events['eventful-event'].forEach(function(concert){ 
     store.createRecord('eventful-event', concert); 
     }); 
    }); 
    } 
+0

lol, danke! Das hat funktioniert. War lange stecken geblieben. – Atache

Verwandte Themen