从查询中复制多条记录

Copying several records from a Query

我有一个数据模型,Material,它有相关的 chemicalProperty 模型。每个 material 可能具有多种化学性质。 我希望用户能够根据现有记录创建新的 Material 记录,并同时创建其相关 chemicalProperty 记录的副本。

我知道如何从一个数组中创建多条记录,我知道如何进行查询。 有没有办法从查询创建数组? 还是有另一种方法可以复制多条记录并在此过程中更改 forgein 密钥?

这是我现在拥有的代码。

感谢任何帮助。

function duplicateChemicalProperties(oldMaterialId, newMaterialId) {
   
/* var query = app.models.Propiedad_Quimica.newQuery();
*  query.filters.Material_fk._equals = oldMaterialId;
*  var recordData = query.run()[0];*/
  
  var recordData = [
   ["1",new Date,userId,new Date,userId,"H2O",,"2",,".5","algun tipo de tolerancia","comentarios"],
   ["2",new Date,userId,new Date,userId,"Algodon de azucar ",,"6",,"10","tolerancia","Notas"]
   ];

  var records = [];
  for (var i = 0; i < recordData.length; i++) {    
    var record = app.models.Propiedad_Quimica.newRecord();
    record.Material_fk =  newMaterialId; 
    record.Fecha_Creacion = recordData[i][1];
    record.Usuario_Creacion = recordData[i][2];
    record.Fecha_Edicion = recordData[i][3];
    record.Usuario_Edicion = recordData[i][4];
    record.Analisis =  recordData[i][5];
    record.P_Min = recordData[i][6];
    record.P_Max = recordData[i][7];
    record.P_Tipico = recordData[i][8];
    record.Tolerancia = recordData[i][9];
    record.Tipo_de_tolerancia = recordData[i][10];
    record.Comentarios = recordData[i][11];


    records.push(record);
  }
  app.saveRecords(records);
}

这应该有效

function duplicateChemicalProperties(oldMaterialId, newMaterialId) {
  var query = app.models.Propiedad_Quimica.newQuery();
  query.filters.Material_fk._equals = oldMaterialId;
  var existingRecords = query.run();

  var newRecords = [];

  for (var i = 0; i < existingRecords.length; i++) {
    var existingRecord = existingRecords[i];
    var newRecord = app.models.Propiedad_Quimica.newRecord();

    newRecord.Material_fk =  newMaterialId;
    newRecord.Fecha_Creacion = existingRecord.Fecha_Creacion;
    newRecord.Usuario_Creacion = existingRecord.Usuario_Creacion;
    ...

    newRecords.push(newRecord);
  }

  app.saveRecords(newRecords);
}

根据数据流,可以使用 prefetches and Models Metadata API

优化算法