我最近进入了ember.js开发,我遇到了一个问题。 我有两个模型user.js和userpermissions.js
// 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);
}
});
最后为新用户调用save。
this.get('newuser').save();
将数据保存到我的nodejs后端。所有用户权限都记录为null。 我试图寻找解决方案但却找不到解决方案。 任何人都可以指出我做错了什么,或解决方案是什么 谢谢!
答案 0 :(得分: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();
}
});
答案 1 :(得分:0)
我通过添加用户Serializer和EmbeddedRecordsMixin
解决了这个问题import DS from 'ember-data';
export default DS.RESTSerializer.extend(DS.EmbeddedRecordsMixin, {
attrs: {
permissionList: { embedded: 'always' },
}
});
答案 2 :(得分:-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);