我正在使用node.js和backbone.js编写应用程序。但是,当我尝试保存模型时,它将模型的JSON嵌套在模型字典中。
node = new NodeModel({prop1:"value1", prop2:"value2"});
node.save();
console.log(req.body)的结果;在我的节点控制器show ...
{model: {"prop1":"value1", "prop2":"value2"} }
如果我使用标准的html表单将相同的节点控制器发布到console.log(req.body);节目...
{prop1:"value1", prop2:"value2"}
我如何获得node.save();函数发布常规HTML的相同JSON吗?
答案 0 :(得分:1)
您似乎已将Backbone配置为emulate JSON:
emulateJSON
Backbone.emulateJSON = true
如果您正在使用无法处理编码为
application/json
的请求的旧版Web服务器,则设置Backbone.emulateJSON = true;
将导致JSON在model
参数下被序列化,并且请求使用application/x-www-form-urlencoded
mime类型,就像来自HTML表单一样。
并且Backbone.sync
的相应块看起来像这样:
if (!options.data && model && (method == 'create' || method == 'update')) {
params.contentType = 'application/json';
params.data = JSON.stringify(model.toJSON());
}
//...
if (Backbone.emulateJSON) {
params.contentType = 'application/x-www-form-urlencoded';
params.data = params.data ? {model: params.data} : {};
}
您可以在第一个model.toJSON()
中看到if
来电,第二个model:
中会出现if
前缀。你应该可以说
Backbone.emulateJSON = false;
在您的应用程序设置中的某个位置(在尝试同步任何内容之后加载Backbone之后),model:
业务将会消失。