2013-03-16 89 views
1

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

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

}); 

在这里,他们正在使用一个RESTful URL一个用户的SQL数据库进行交互(我不知道那是什么)。有没有人有任何想法我可以参考我的postgres表?我非常困惑,不知道发生了什么(这对我来说真的很新)

谢谢。

回答

1

RESTful URL只是使用RESTful原则的Web服务的URL。谷歌可以比我在这里解释得更好,但基本的想法是将各种REST“动词”(GET,POST,DELETE等)集成到API中。举例来说,这里是一个假想的用户API一套基于REST的动词+网址:

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 

骨干效果特别好,如果你的服务器端的设计相似,但它不是必需的。

如果你的服务器端API是不是平安,你只需要重写你的模型和集合(最有可能的destroyfetchsaveurlparsesync,并toJSON)采取一切适当的某些方法为您的服务器。

例如,您可能要覆盖模型的url方法,使其恢复服务器的(unRESTful)网址:

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

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

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

可以修改解析剥离出来:

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

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