Spine JS模型:Spine如何处理包含相关模型记录的服务器响应?

时间:2012-02-11 23:11:19

标签: javascript model-view-controller jquery coffeescript spine.js

我刚开始使用Spine.js,这对用户来说真的很有趣。 有没有人知道Spine是否处理来自服务器响应的相关对象?以下示例。 如果它 - 伟大 - 如果不是?那么任何关于如何做到这一点的建议都会很棒!感谢

模型

class User extends Spine.Model
  @configure 'User', 'Name'
  @hasMany 'friends', 'models/Friend'
  @extend Spine.Model.Ajax

class Friend extends Spine.Model
  @configure 'Friend', 'User_id'
  @belongsTo 'user', 'model/User'
  @extend @Local

服务器对用户更新的响应
{"user":{"name":"John Brilliant", "friends":[{"user_id":1},{"user_id":2}] }}

那么,当Spine收到此响应时,是否应该因为相关模型而更新用户和用户朋友?

1 个答案:

答案 0 :(得分:0)

查看Spine附带的relation.js。 http://spinejs.com/docs/relations

然而,我注意到嵌套资源存在一些问题(使用/ users / 1 / friends等创建和更新朋友)。 查看http://groups.google.com/group/spinejs/browse_thread/thread/6a5327cdb8afdc69?tvc=2了解详情。

如果用户将始终是当前登录的用户,我建议不要在2之间创建关系。只有您的服务器需要了解多个用户。您的客户端应用程序应假定所有操作/模型/记录都限定为当前登录的用户。在服务器端,只需检查您的用户是否已登录,如果是,则仅返回当前用户的朋友。 (否则重定向到登录页面)

假设朋友3属于用户2.如果用户1登录并且他请求朋友,则服务器将仅返回朋友1和2.如果用户2登录,则仅返回朋友3。

不要忘记在节目,创建,更新和删除操作上使用当前用户:p

如果您需要用户的信息,只需在服务器上执行“/ users / current”操作,然后返回您需要的信息。您可以将其存储在用户模型中,然后您可以使用该模型更新用户名等。