Pet*_*rov 6 node.js express backbone.js
我在客户端上使用Backbone.js,在后端使用node.js,我在执行'有限'模型保存时遇到了一些麻烦,如下所述:http://backbonejs.org/#Model-保存
如在示例中,如果我这样做
book.save({author: "Teddy"});
Run Code Online (Sandbox Code Playgroud)
如何使用express.js访问save的参数,即我只想保存到'author'字段?我尝试了以下内容
req.body -> gives ALL parameters of the model being saved, I want only the 'author' field
req.query -> empty
Run Code Online (Sandbox Code Playgroud)
任何帮助非常感谢!
nik*_*shr 12
save model.save([attributes],[options])
[...]属性hash(如set中所示)应该包含您想要更改的属性 - 未提及的键不会被更改 - 但是,资源的完整表示将被发送到服务器.
但是,您可以覆盖save方法,并data通过将发送到服务器而不是完整模型表示的选项提供属性.例如,这只会保存传递给方法的属性:
var M = Backbone.Model.extend({
save: function (attrs, options) {
options || (options = {});
options.contentType = 'application/json';
options.data = JSON.stringify(attrs);
Backbone.Model.prototype.save.call(this, attrs, options);
}
});
Run Code Online (Sandbox Code Playgroud)
还有一个小提琴http://jsfiddle.net/dLFgD/
正如@mikebridge在评论中指出的那样,现在可以通过传递一个attrs选项来获得此行为.所以要么使用
book.save(null, {
attrs: {author: "Teddy"}
});
Run Code Online (Sandbox Code Playgroud)
或保持覆盖
var M = Backbone.Model.extend({
url: '/echo/json/',
save: function(attrs, options) {
options || (options = {});
options.attrs = attrs;
Backbone.Model.prototype.save.call(this, attrs, options);
}
});
Run Code Online (Sandbox Code Playgroud)
http://jsfiddle.net/nikoshr/dLFgD/7/
如果您正在使用支持它的Backbone版本(> = 0.9.9)并且您的服务器理解该动词,您也可以发送PATCH请求,如@ pkyeck的回答中所述
| 归档时间: |
|
| 查看次数: |
6294 次 |
| 最近记录: |