我正在尝试将包含嵌入式集合的相当复杂的模型保存回关系数据库。由于嵌入式集合返回到服务器的数据包含足够公平的对象。然而,我在现有应用程序之上构建主干应用程序,并且必须以标量形式返回值才能重用服务器端代码。 关于这个的最好的是什么,我正在考虑重写模型的toJSON函数,但我真的不应该这样。所以我能想到的另一种选择是覆盖同步方法并在那里进行。然而,即使这似乎也不对。我是否遗漏了某些东西或者正在覆盖同步方法是一种必要的恶魔?
答案 0 :(得分:8)
要覆盖从数据库保存和加载模型的方式,您可以覆盖两个方法。
Model.toJSON
在此处放置自定义序列化逻辑。Model.parse
在此处放置自定义反序列化逻辑。理想情况下,您只有自定义序列化/反序列化逻辑来“优化”数据库。即如果您有Age
和DateOfBirth
字段,则只在Model.toJSON
的数据库中存储一个,并在Model.parse
中计算另一个。
如果您需要 NOT 模型特定的自定义序列化/反序列化逻辑,则覆盖Backbone.Sync
。
您也可以覆盖model.Sync
。这意味着模型将使用特定的自定义Sync
功能,而不是使用Backbone.Sync
答案 1 :(得分:0)
我认为你想要覆盖同步方法是完全正确的。 toJSON应该总是返回JSON,如果它返回的不是JSON,其他程序员可能会发现很难理解你的代码。