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