【问题标题】:Creating record with belongsTo relationship error - Ember.js创建带有 belongsTo 关系错误的记录 - Ember.js
【发布时间】:2015-02-08 19:36:39
【问题描述】:

鉴于这两个模型: Message.js 和 User.js, 尝试使用 Ember.js 创建记录时,我不断收到以下错误。任何 Ember.js 向导都知道我的代码有什么问题吗?

// 错误:断言失败:您只能将“用户”记录添加到此关系中

App.Message = DS.Model.extend({
 title: DS.attr(),
 body: DS.attr(),
 user: DS.belongsTo('user'),
});

App.User = DS.Model.extend({
  first_name: DS.attr(),
  last_name: DS.attr(),
  email: DS.attr(),
  password: DS.attr(),
  messages: DS.hasMany('message'),
});


App.NewMessageController = Ember.Controller.extend({
need: ['application'],
thisUserID: Ember.computed.alias('controllers.application.userID'),

actions: {
    save: function() {
        // Prints -> 'thisUserID' -- all is fine here
        console.log('The user id from new-letter is: '+this.get('thisUserID')); 

        var store = this.store;
        //Prints -> <DS.PromiseObject:ember433> -- Strange?
        console.log("Checking the store: "+store.find('user', this.get('thisUserID'))); 

        var newMessage = store.createRecord('message', {
            title: this.get('title'),
            body: this.get('body'),
        });
        newMessage.save();

        // Prints-> Error: Assertion Failed: You can only add a 'user' record to this relationship
        var user = store.find('user', this.get('thisUserID')).then(function(user) {
          newMessage.set('user', user);
        });
    }
}
});

【问题讨论】:

    标签: javascript ember.js model firebase


    【解决方案1】:

    我不是向导,但您似乎正在尝试将用户记录设置为消息: newMessage.set('user', user);

    相反,您应该添加以下消息: user.get('messages').addObject(newMessage);

    【讨论】:

    • 我添加了 'user.save();'在你的建议之后,它奏效了。但是,它存储了一个与字母记录相同的 id 的“id”。我猜这是预期的效果?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-19
    • 1970-01-01
    • 2014-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-26
    相关资源
    最近更新 更多