2015-10-20 66 views
0

我最近進入了ember.js開發,並且遇到了問題。 我有兩個型號user.js的和userpermissions.jsEmber hasMany Relationship not persisting

// user 
export default DS.Model.extend({ 
    userName:DS.attr('string'), 
    lastName:DS.attr('string'), 
    permissionList:DS.hasMany('userpermission',{async:true}), 
}); 

// userpermissions 
export default DS.Model.extend({ 
    user:DS.belongsTo('user'), 
    permissionName:DS.attr('string'), 
    permissionId:DS.attr('string'), 
}); 

我試圖爲用戶記錄設置權限。

export default Ember.Controller.extend({ 

    selectedPermission: {}, 
    newUser: {}, 
    init: function() { 
     this.newUser = this.store.createRecord('user'); 
    }, 

    addPermission: function() { 
     var permission = this.store.createRecord('userpermission'); 
     permission.set('permissionId', this.get('selectedPermission.id')); 
     this.get('newUser').get('permissionList').pushObject(permission); 
    } 
}); 

最後保存是爲新用戶調用的。

this.get('newuser').save(); 

將數據保存到我的nodejs後端。所有用戶權限都被記錄爲空。 我試圖尋找解決方案,但找不到一個解決方案。 任何人都可以指出我做錯了什麼,或者是什麼解決方案 謝謝!

回答

0

我通過增加用戶串行和EmbeddedRecordsMixin

import DS from 'ember-data'; 

export default DS.RESTSerializer.extend(DS.EmbeddedRecordsMixin, { 
attrs: { 
permissionList: { embedded: 'always' }, 

} 
}); 
解決了這個
-1

我們做的方式有很多連接。

// user 
    export default DS.Model.extend({ 
     userName:DS.attr('string'), 
     lastName:DS.attr('string'), 
    }); 

    // permissions 
    export default DS.Model.extend({ 
     permissionName: DS.attr('string) 
    }); 

    // userpermissions 
    export default DS.Model.extend({ 
     user:DS.belongsTo('user'), 
     permission:DS.belongs('permission') 
    }); 

通過第三張表。

關於保存:Set multiple data with Ember and make it persist on Firebase

user.save().then(function(user) { 
    permission.save().then(function(permission) { 
     userpermission.save().then(function() { 
      // Connection done 
     }); 
    }); 
}, failure); 
0

在任何時候,你似乎拯救准許記錄...

您不必擔心表,但你需要保存兩種模式。在通過API保存兩條記錄時,Ember無法知道所需的操作順序,因此您必須按照正確的順序顯式保存每條記錄。

因此,嘗試修改您的控制器這樣:

export default Ember.Controller.extend({ 

    selectedPermission: {}, 
    newUser: {}, 
    init: function() { 
     this.newUser = this.store.createRecord('user'); 
    }, 

    addPermission: function() { 
     var permission = this.store.createRecord('userpermission'); 
     permission.set('permissionId', this.get('selectedPermission.id')); 
     this.get('newUser').get('permissionList').pushObject(permission); 

     permission.save(); 
    } 
});