我正在尝试在ember中创建帐户和用户模型之间的一对一关系。当我创建模型时,我抛出了错误
您不能再将modelClass作为store.buildInternalModel的第一个参数传递。改为传递modelName。 错误
我的模特:
import DS from 'ember-data';
export default DS.Model.extend({
email: DS.attr('string'),
account: DS.belongsTo('account')
});
import DS from 'ember-data';
export default DS.Model.extend({
user_name: DS.attr('string'),
content_type: DS.attr('string'),
creator: DS.attr('boolean'),
user: DS.belongsTo('user')
});
routes / create-account.js中的帐户创建操作:
createAccount (params) {
let current_user = this.get('auth.credentials.id');
let account = this.get('store').createRecord('account', params);
account.set('user', user);
account.save();
},
我不知道这个错误意味着什么或如何解决它。更糟糕的是,我的代码与ember文档中的代码一致。我也能写入我的后端数据库,即使这个代码被破坏了。有没有人在遇到此错误之前/知道如何解决它?
答案 0 :(得分:0)
这很可能是因为您将account
user
设置为user
而非user
模型对象的ID。您的操作可能会被重构以获取user
模型对象,然后将其设置为account
。像这样:
createAccount(params) {
const store = this.get('store');
const currentUserId = this.get('auth.credentials.id');
store.findRecord('user', currentUserId).then((user) => {
params['user'] = user;
store.createRecord('account', params).save();
});
}
当然,如果auth
服务也可以为登录的user
提供模型参考,则可以简化此操作。