Javascript 我的主干集合中响应/模型之间的Id冲突

Javascript 我的主干集合中响应/模型之间的Id冲突,javascript,mysql,ajax,backbone.js,Javascript,Mysql,Ajax,Backbone.js,我有一个MySQL数据库,其中包含一个files表和一个folder表,其中files表上有与folder表相关的外键。对于文件夹集合,我必须用文件夹模型和文件模型填充集合。因为差异模型ID发生冲突,所以一个模型会删除另一个模型。我的问题是,如何解决这个问题。在这种情况下,为了避免id冲突,您可能需要更改主干将用作id的属性。标准是属性“id”,但您可以通过更改idAttribute属性来修改它 以下是您的操作方法: idAttribute: 'uniqueId', 其中uniqueId是一个

我有一个MySQL数据库,其中包含一个files表和一个folder表,其中files表上有与folder表相关的外键。对于文件夹集合,我必须用文件夹模型和文件模型填充集合。因为差异模型ID发生冲突,所以一个模型会删除另一个模型。我的问题是,如何解决这个问题。

在这种情况下,为了避免id冲突,您可能需要更改主干将用作id的属性。标准是属性“id”,但您可以通过更改idAttribute属性来修改它

以下是您的操作方法:

idAttribute: 'uniqueId',
其中uniqueId是一个属性,您肯定知道它永远不会冲突

如果没有唯一的值,则必须创建一个。这可以通过重写parse函数(从后端接收数据时调用)来实现。以下是创建复合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的组合

这意味着在我的表格中增加一列?不需要@Remi Adeoye。您可以重写解析函数(当从后端接收到答案时调用),并修改答案,使每个模型有一个唯一的值。例如,您可以创建一个复合id。请参见上面答案中的“我的编辑”。