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, ...).
但是,由于您的后端正确处理表单数据,我猜您的中间件没有按照您希望的方式配置。
我正在尝试使用 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, ...).
但是,由于您的后端正确处理表单数据,我猜您的中间件没有按照您希望的方式配置。