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