我的骨干集合中的响应/模型之间的ID冲突

时间:2013-06-27 08:45:12

标签: javascript mysql ajax backbone.js

我有一个MySQL数据库,其中包含一个文件表和一个文件夹表,文件表中的外键与文件夹表有关。对于文件夹集合,我必须使用文件夹模型和文件模型填充集合。因为差异模型ids冲突,一个模型会抹掉另一个模型。我的问题是,我该怎么做到这一点。

1 个答案:

答案 0 :(得分:1)

为了避免在这种情况下发生ID冲突,您可能想要更改Backbone将用作id的属性。 Standard是属性“id”,但您可以通过更改idAttribute属性来修改它。

这是你如何做到的:

idAttribute: 'uniqueId',

其中uniqueId是一个你知道肯定不会发生冲突的属性。

如果您没有唯一值,则必须创建一个值。这可以通过覆盖解析函数(在从后端接收数据时调用)来完成。这是您创建复合ID的方法:

parse:function(data){
  if(_.isArray(data){
    _.each(data, function(record){
      record['uniqueId'] = record['id'] + ':' + ([check if record is a file] ? record['folderId'] : '');
    }
  }
  return data;
}

现在,您的所有文件夹uniqueId将与其ID相同,而文件uniqueId将是文件ID和文件夹ID的组合。