2016-03-30 8 views
1

Bu konuyla ilgili diğer yayınların çoğu 2+ yaşındadır, bu yüzden burada basit bir soru sorun.Ember verisine bağlı anahtarlar undefined

'Bizinfo' kaydının 'kullanıcı' kaydına ait olması için Ember veri ilişkilerini kullanıyorum. Basit görünüyor, ama en kötü zamanını yaşıyorum. Uygulamanın/modelleri/bizinfo.js ise

Ben çizgi var:

'ownedBy': DS.belongsTo('user') 

Ve doğrulama yaptıktan sonra modelini kurtarmak benim rota, içinde

, Aşağıdaki kod var:

user_id: Ember.computed(function(){ 
    return `${this.get('session.data.authenticated.user_id')}`; 
    }), 

    user: Ember.computed(function(){ 
    return this.store.findRecord('user', this.get('user_id')); 
    }), 

    model(params){ 
    return this.store.createRecord('bizinfo', {'ownedBy': this.get('user')}); 
    }, 
Bu noktada

Bakmam gereken Kor denetçisine giderseniz veri nesnesi 'bizinfo' Ben belongsTo sekmesinin altında şu bkz:

ownedBy : <(subclass of Ember.ObjectProxy):ember1053> 
Yani burada

submit() { 
    let model = this.currentModel; 
    console.log(model.ownedBy); 
    console.log(`what does the model look like?`); 
    console.log(model.toJSON()); 
    model.validate().then(({model, validations}) => { 
    if (validations.get('isValid')) { 
     this.setProperties({ 
     showAlert: false, 
     isRegistered: true, 
     showCode: false 
     }); 
     let success = (response) => { 
     console.log(`Server responded with ${response.toJSON()}`); 
     }; 

     let failure = (response) => { 
     console.log(`Server responded with ${response}`); 
     }; 
     model.save().then(success, failure); 
    } else { 
     this.set('showAlert', true); 
    } 
    this.set('didValidate', true); 
    }, (errors) => { 
    console.log(`errors from failed validation: ${errors}`); 
    }); 
}, 

ilk console.log açıklamada sonucudur:

İşte benim teslim eylemden kodudur

ComputedProperty {isDescriptor: true, _dependentKeys: undefined, _suspended: undefined, _meta: Object, _volatile: false…} 

Ve (model.toJSON baktığınızda) log Ben burada neyin yanlış olduğunu gören var mı? Kayıt rekoru mu? Böyle 'kullanıcı' parametresi olarak sadece kimliği göndererek gibi farklı permütasyon (çok çalıştık.

cevap

2

findRecord bir söz dönecektir. Bu sorundan kurtulmanın en basit yolu

model(params){ 
    return this.store.findRecord('user', this.get('user_id')) . 
    then(ownedBy => this.store.createRecord('bizinfo', {ownedBy}); 
} 

Bu iradesidir findRecord'un çözülmesini bekleyin, ardından ownedBy özelliği olarak çözümlenen değerle yeni bir kayıt döndürün.

+1

Woohoo! Sen bir hayat kurtarıcısın Tora-san. m (_ _) m –