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


Backbone.js serializing the models attributes for syncing

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

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

  1. Model.toJSON在此处放置自定义序列化逻辑
  2. Model.parse在此处放置自定义反序列化逻辑

理想情况下,您只有自定义的序列化/反序列化逻辑来"优化"数据库。即,如果您有一个AgeDateOfBirth字段,则只将其中一个存储在数据库中的Model.toJSON中,并将另一个计算在Model.parse中。

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

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

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