1

我正在尝试使用 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”来获取快速 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 模型属性的 express request 对象上是否有其他对象?

4

1 回答 1

1

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

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

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

于 2015-08-06T03:39:39.560 回答