【问题标题】:Ember.js save() after createRecord sends empty req.body to my express.js server在 createRecord 将空的 req.body 发送到我的 express.js 服务器后,Ember.js save()
【发布时间】:2016-05-03 03:08:48
【问题描述】:

当我使用 createRecord 然后保存时,快递服务器接收到 post 请求但 req.body 为空。我使用 Postman 发出了相同的发布请求,并且效果很好。 get 请求也适用于以列表形式显示任务的任务模板。

这是我的 ember 代码:

路线(tasks.js):

import Ember from 'ember';

export default Ember.Route.extend({
  model() {
    return this.store.findAll('task');
  },
  actions: {
   addTask() {
     const task = this.store.createRecord('task', {
       title: this.get("controller.title")
     });

     task.save();

   }
 }
});

模型(task.js):

import Model from 'ember-data/model';
import DS from 'ember-data';


export default Model.extend({
  title: DS.attr('string')
});

模板(tasks.hbs):

{{input value=title}}
<button id="add-task" {{action "addTask"}}>Add</button>

<br><br>

{{#each model as |task|}}
    {{task.title}}<br>
{{/each}}

{{outlet}}

我正在使用默认的 ember JSONAPIAdapter。

【问题讨论】:

  • 当你向 Postman 发出请求时,你是否像 Ember 一样将 MIME 类型设置为 jsonapi?可能是这样,表达不理解吗?我知道我必须配置 Ruby on Rails,否则我也会得到一个空白正文。
  • 尝试使用 chrome 控制台并比较请求(网址、标题、表单数据等)...还请检查 this.get("controller.title") 是否真的有效。

标签: javascript node.js express ember.js


【解决方案1】:

Ember 和 JSONAPIAdapter 正在发送类型为 application/vnd.api+json 的标头。我通过在 express.js 中添加它来实现它:

app.use(bodyParser.json({ type: 'application/vnd.api+json' }));

【讨论】:

  • 谢谢!节省了我的时间。不想在 Controller 中使用 AJAX 请求,尽管它可以工作。
【解决方案2】:

我在使用 JSONAPIAdapter 时遇到了同样的问题。标题似乎有些不匹配。我还没弄清楚出了什么问题。

但是我通过使用 RESTAdapter 来代替它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-09
    • 2023-04-06
    • 1970-01-01
    • 2014-04-06
    • 1970-01-01
    • 2015-06-11
    • 1970-01-01
    • 2017-11-30
    相关资源
    最近更新 更多