node.js - model.save() 的 Backbone.js/express.js 参数

标签 node.js backbone.js express

我在客户端使用 Backbone.js,在后端使用 node.js,我在进行“有限”模型保存时遇到了一些麻烦,如下所述:http://backbonejs.org/#Model-save

如示例所示,如果我这样做

book.save({author: "Teddy"});

如何使用 express.js 访问保存的参数,即我只想保存到“作者”字段的事实?我试过以下方法

req.body -> gives ALL parameters of the model being saved, I want only the 'author' field
req.query -> empty

非常感谢任何帮助!

最佳答案

Model.save documentation 中所述:

save model.save([attributes], [options])
[...] The attributes hash (as in set) should contain the attributes you'd like to change — keys that aren't mentioned won't be altered — but, a complete representation of the resource will be sent to the server.

但是,您可以覆盖保存方法并通过选项提供 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);
    }
});

还有一把 fiddle http://jsfiddle.net/dLFgD/


正如@mikebridge 在评论中指出的那样,现在可以通过传递 attrs 选项来获得此行为。所以要么使用

book.save(null, {
    attrs: {author: "Teddy"}
});

或者保持覆盖

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);
    }
});

http://jsfiddle.net/nikoshr/dLFgD/7/


如果您使用的是支持它的 Backbone 版本 (>=0.9.9) 并且您的服务器理解该动词,则您也可以发送 PATCH 请求,如 explained in @pkyeck's answer

关于node.js - model.save() 的 Backbone.js/express.js 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11522286/

相关文章:

node.js - 我错误地从服务器(aws)删除了一些nodejs代码,如何恢复它

backbone.js - 通过listenTo跟踪主干事件

javascript - 通过带有下划线的多个属性对对象数组进行分组

node.js - express JS : how to know if request is for static asset?

node.js - Express-Session 未在生产中持续存在

windows - 在 Windows 平台上从 Node.js 连接 DB2

javascript - Rethinkdb 使用 thinky 更改 Express.js 中的 feed

node.js - 如何在快速路由中指定可选参数名称?

node.js - 尝试部署 Firebase Functions 教程时出现语法解析错误

javascript - Backbone 路由器参数不工作