我正在尝试使用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模型的属性?
答案 0 :(得分:1)
默认情况下,HTML <form>
会发送application/x-www-form-urlencoded
个数据,而Backbone.sync()
不会发送.save()
之类的JSON(内部由{{1}}使用)。
打开浏览器的开发人员工具,并在保存模型时查看网络分析,以确保请求正常工作(JSON正文,网址,...)。
但是,由于您的后端正确处理表单数据,我猜您的中间件未按您希望的方式配置。