将列添加到现有的ember模型

时间:2017-05-19 22:10:57

标签: ember.js model firebase-realtime-database

哇,这很难找到。

我在ember中有一个现有模型,我想添加一个新列。我已经能够看到如何从CLI生成此内容,因此已手动将其添加到我的component.jsmodels/post.js。我已将该字段添加到我的表单中,并将把手添加到我的视图中。检查Firebase我可以确认我没有更新该字段。

在Rails中,我只需运行rails generate migration add_snippet_to_posts snippet:string,但在Ember中执行此操作只会创建一个新模型。

模型/ post.js

import DS from 'ember-data';

export default DS.Model.extend({
  title: DS.attr('string'),
  author: DS.attr('string'),
  createdDate: DS.attr('date'),
  text: DS.attr('string'),
  snippet: DS.attr('string') #<=manually added this.
});

component.js

import Ember from 'ember';

export default Ember.Component.extend({
  actions: {
    createPost: function (model) {
      this.sendAction('createPost', model);

      // Clear each input field
      this.set('newPost.title', null);
      this.set('newPost.author', null);
      this.set('newPost.text', null);
      this.set('newPost.snippet', null); #<= manually added this
    }
  }
});

我该怎么做?

解决

还需要更新 routes / index.js

import Ember from 'ember';

export default Ember.Route.extend({
  model: function () {
    return this.store.findAll('post');
},
actions: {
  createPost: function (model) {
    let post = this.store.createRecord('post', {
      title: model.title,
      text: model.text,
      author: model.author,
      snippet: model.snippet, # <= add this too
      createdDate: new Date()
    });
    post.save();
  }
}

});

1 个答案:

答案 0 :(得分:0)

官方的答案是,您不能只将使用ember-CLI 添加到已创建的模型中 - 并且同时,更新所有内容它可能会影响整个应用程序。您必须手动编写属性以及它们在路由/组件/模板等中的使用方式。

听起来很棒Rails可以知道所有这些东西。 :)