1

我正在努力在主干中创建一个模型来与我的 postgres 数据库进行交互。我在客户端使用backbone.js,在服务器端使用node.js/sequelize.js。主干教程中给出的代码是这样说的:

 var UserModel = Backbone.Model.extend({
    urlRoot: '/user',
    defaults: {
        name: '',
        email: ''
    }

});

在这里,他们使用 RESTful url 与用户 sql 数据库进行交互(我不知道那是什么)。有谁知道如何参考我的 postgres 表?我非常困惑,不知道发生了什么(这对我来说真的很新鲜)

谢谢。

4

1 回答 1

1

RESTful URL 只是使用 RESTful 原则的 Web 服务的 URL。Google 可以比我在这里更好地解释这一点,但基本思想是将各种 REST“动词”(GET、POST、DELETE 等)集成到 API 中。例如,下面是一组 RESTful 动词 + 用于虚构用户 API 的 url:

GET    /user   - returns a list of users
POST   /user   - creates a new user
DELETE /user/5 - deletes the user with ID 5
PUT    /user/5 - updates/edits the user with ID 5

如果您的服务器端设计相似,Backbone 会特别好用,但这不是必需的。

如果您的服务器端 API 不是 RESTful,您只需覆盖模型和集合上的某些方法(很可能destroy是 、fetchsaveurlparsesynctoJSON),以执行适合您服务器的任何操作。

例如,您可能希望覆盖url模型的方法以使其返回服务器的(非 RESTful)URL:

url: function() {
    return 'www.example.com/some/very/not/RESTful/' + this.id + '/URL/example';
}

或者,如果您的服务器返回带有“信封”的对象,例如:

{
    type: 'envelope',
    payload: {
        type: 'user',
        name: 'Bob',
        id: 5,
    }
}

您可以修改 parse 以将其删除:

parse: function(original) {
    return original.payload;
}

至于“我如何引用我的 postgres 表”,如果您覆盖了适当的方法,然后在您的模型和集合上调用适当的 Backbone 操作方法 ( fetch// save) destroy,Backbone 将向您在url覆盖中定义的 URL 发出 AJAX 请求. 然后,您的服务器可以使用您想要解释该请求的任何语言并在您的 PostgreSQL 数据库上执行适当的操作。

于 2013-03-16T02:40:09.807 回答