尝试在ember.js中创建一对一关系时出错

时间:2017-06-12 17:59:30

标签: javascript ember.js

我正在尝试在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文档中的代码一致。我也能写入我的后端数据库,即使这个代码被破坏了。有没有人在遇到此错误之前/知道如何解决它?

1 个答案:

答案 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提供模型参考,则可以简化此操作。