Backbone.js序列化模型属性以进行同步

时间:2011-06-27 14:49:15

标签: php javascript backbone.js

我正在尝试将包含嵌入式集合的相当复杂的模型保存回关系数据库。由于嵌入式集合返回到服务器的数据包含足够公平的对象。然而,我在现有应用程序之上构建主干应用程序,并且必须以标量形式返回值才能重用服务器端代码。 关于这个的最好的是什么,我正在考虑重写模型的toJSON函数,但我真的不应该这样。所以我能想到的另一种选择是覆盖同步方法并在那里进行。然而,即使这似乎也不对。我是否遗漏了某些东西或者正在覆盖同步方法是一种必要的恶魔?

2 个答案:

答案 0 :(得分:8)

要覆盖从数据库保存和加载模型的方式,您可以覆盖两个方法。

  1. Model.toJSON在此处放置自定义序列化逻辑。
  2. Model.parse在此处放置自定义反序列化逻辑。
  3. 理想情况下,您只有自定义序列化/反序列化逻辑来“优化”数据库。即如果您有AgeDateOfBirth字段,则只在Model.toJSON的数据库中存储一个,并在Model.parse中计算另一个。

    如果您需要 NOT 模型特定的自定义序列化/反序列化逻辑,则覆盖Backbone.Sync

    您也可以覆盖model.Sync。这意味着模型将使用特定的自定义Sync功能,而不是使用Backbone.Sync

答案 1 :(得分:0)

我认为你想要覆盖同步方法是完全正确的。 toJSON应该总是返回JSON,如果它返回的不是JSON,其他程序员可能会发现很难理解你的代码。