backbone model.save()不使用正文解析器设置快速服务器的响应主体

时间:2015-08-05 20:50:32

标签: node.js backbone.js express backbone-model body-parser

我正在尝试使用model.save()保存(发布)Backbone模型。

型号:

Backbone.Model.extend({
  urlRoot: '/project/',
  defaults: {
    projectname: "default projectname"
 }
});

保存模型(在我的Backbone.router对象中):

putTest: function(id) {
    var projectItem = new ProjectModel({projectname: "This shiny new project"});
    projectItem.save();
},

我希望我的服务器上的node / express路由器使用中间件'body-parser'来获取快速request.body对象上的模型属性,如下所示:

post: function(request, response) {
        console.log(request.body.projectname);
}

但是response.body对象是空的。

当我使用带有method =“post”的常规html表单时,如下所示:

<form id =  "createProject"
  action    =  "/project/"
  method    =  "post" >
  <input type="text" name="projectName" value="Project name" />
</form>

一切都按预期工作。

我现在整天都在努力,看不出我做错了什么。

我是否误解了整个Backbone.model.save()概念,还是快递请求对象上还有另一个对象在保存时保存了我的Backbone模型的属性?

1 个答案:

答案 0 :(得分:1)

默认情况下,HTML <form>会发送application/x-www-form-urlencoded个数据,而Backbone.sync()不会发送.save()之类的JSON(内部由{{1}}使用)。

打开浏览器的开发人员工具,并在保存模型时查看网络分析,以确保请求正常工作(JSON正文,网址,...)。

但是,由于您的后端正确处理表单数据,我猜您的中间件未按您希望的方式配置。