骨干model.save()不使用body parser设置express服务器的响应主体
我正在尝试使用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(); },
我希望服务器上使用中间件“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()概念,还是在保存时,在express请求对象上有另一个对象来保存我的Backbone模型的属性?
默认情况下,一个HTML <form>
发送application/x-www-form-urlencoded
数据,而不是像Backbone.sync()
那样的JSON .save()
内部由.save()
使用)。
打开浏览器的开发人员工具,并在保存模型时查看networking分析,以确保请求正常工作(JSON正文,URL,…)。
但是,由于您的后端可以正确处理表单数据,我猜你的中间件没有按照你想要的方式进行configuration。