在与Ember.Js的hasMany关系中创建子记录

Eri*_*son 5 ember.js ember-data firebase

通过我的搜索,我没有找到满意的答案,所以我想我会在这里问.

我目前正在使用Ember.Js,Ember-Data和Ember-Firebase-Adapter,并尝试创建一个CRUD应用程序,它将创建一个父记录,然后创建后续子记录到所述父记录.

(请注意,DS.Firebase.LiveModel是Firebase适配器,相当于DS.Model/Ember.Model)

这是我的模型,改为通用的帖子/评论类型

    App.Post = DS.Firebase.LiveModel.extend({
      name: DS.attr('string'),
      body: DS.attr('string'),
      date: DS.attr('date'),
      comments: DS.hasMany('App.Comment', {embedded: 'always'})
    });

    App.Comment = DS.Firebase.LiveModel.extend({
      message: DS.attr('string'),
      timestamp: DS.attr('string'),
      post: DS.belongsTo('App.Post', {key: "post_id"})
    });
Run Code Online (Sandbox Code Playgroud)

(我应该post_id= post?)

这是我创建的路线Comments:

    App.PostsCommentRoute = Ember.Route.extend({
      setupController: function(controller) {
        controller.set('content', App.Comment.find());
      }

    });
Run Code Online (Sandbox Code Playgroud)

这是我的控制器PostsCommentRoute:

    App.PostsCommentController = Ember.ObjectController.extend({
      newMessage: null,
      newTimestamp: null,

       saveComment: function() {
        App.Pbp.createRecord({
          message: this.get('newMessage'),
          timestamp: this.get('newTimestamp')
        })


          App.store.commit();
          this.set('newMessage', null);
          this.set('newTimestamp', null);


        }
    });
Run Code Online (Sandbox Code Playgroud)

我想我可能会错过序列化器?我已经阅读了几件事,addArray但我试图插入的东西并没有证明是富有成效的.因为我的评论很好,但是在我的JSON中它们与帖子无关.

有没有办法让创建Comments者找到相关的Post_Id,然后Post在创建时关联到所说的?所以我的PostJSON有一个数组Comment_Ids然后允许它们与帖子一起显示?

任何帮助,或与良好的例子的链接将不胜感激.我知道这是一个相对简单的窘境,但我已经坚持了一段时间了:p

小智 4

你可以尝试做的是这个

post = App.Post.find(1);
post.get('comments').pushObject(App.Comment.createRecord({})); //This will add a new comment to your post and set the post_id as the post id
App.store.commit()
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你