backbone model.save() 没有设置带有body parser的express server的response body

backbone model.save() does not set the response body of the express server with body parser

我正在尝试使用 model.save() 保存 (post) 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' 来获取 express 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 模型属性的快速请求对象上是否有其他对象?

默认情况下,HTML <form> 发送 application/x-www-form-urlencoded 数据,没有 JSON 像 Backbone.sync() 那样(.save() 在内部使用).

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

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