【发布时间】:2012-10-31 10:09:22
【问题描述】:
我刚刚开始了解 BackboneJS,但我仍在努力解决的(许多)事情之一是模型如何准确地同步并与服务器端数据库记录相关联。
例如,我有一个“Dvd”模型,现在我更改“Dvd”模型上的一个属性,例如名称,然后我调用save(),服务器端如何知道DB记录到什么更新? Backbone 是否保存 DB 行 ID 或其他内容?
【问题讨论】:
标签: backbone.js
我刚刚开始了解 BackboneJS,但我仍在努力解决的(许多)事情之一是模型如何准确地同步并与服务器端数据库记录相关联。
例如,我有一个“Dvd”模型,现在我更改“Dvd”模型上的一个属性,例如名称,然后我调用save(),服务器端如何知道DB记录到什么更新? Backbone 是否保存 DB 行 ID 或其他内容?
【问题讨论】:
标签: backbone.js
是的,通常您会设置 Backbone 模型,以便它们具有您正在使用的任何对象的数据库行 ID。当其中一个在客户端是全新的并且尚未保存到服务器时,它将具有默认 ID 或没有 ID,这无关紧要,因为如果初始保存事务成功,服务器将分配 ID .
在保存或更新模型项时,Backbone 期望服务器回复一些 JSON,其中包含自发出保存或更新请求以来已更改的任何属性。在对初始保存请求的响应中,服务器会通知客户端新保存的项目的行 ID(您也可以同时发送您可能需要传递给客户端的任何其他信息)。
默认情况下,模型对象的 'id' 属性被假定为其唯一标识符,但如果您对主键使用不同的标识符,主干允许您更改此设置。只需给您的模型一个 idAttribute 参数(请参阅Backbone.Model.extend() 的文档)即可。
同时,可以将urlRoot 参数或url 函数提供给您的模型,以表征应该用于向给定模型的服务器发送各种ajax 请求的url。
【讨论】: