2010-11-06 11 views
8

Tengo un JsonStore con los siguientes campos:Comprobar si existe registro similar en la tienda para evitar duplicados

id 
date 
time 
type 

Tengo un formulario que recoge los tres campos (date, time, type) e inserta un nuevo registro en la tienda (guardo la tienda por separado). Me gustaría realizar una comprobación si ya existe un registro con la misma combinación de valores de campo en la tienda para evitar entradas duplicadas.

he logrado comprobar si hay duplicados de identificación en otra tienda como esta:

find = DepartmentMemberStore.find('member_id', value_from_form); 
if (find != -1) { 
    // popup error window 
    return; 
} else { 
    // add new record to store 
} 

No sé cómo comprobar una tienda para ver si encuentro varios valores de campo.

Respuesta

16

He usado la tienda findBy(Function fn, [Object scope], [Number startIndex]) para esta situación. Se solicita la función fn para cada registro en la tienda, y el registro actual y su identificación correspondiente se pasan a la función. Por lo tanto, puede usar los campos del registro actual para compararlos con cada campo de formulario.

He aquí un ejemplo para su situación:

var recordIndex = DepartmentMemberStore.findBy(
    function(record, id){ 
     if(record.get('date') === date_from_form && 
      record.get('time') === time_from_form && 
      record.get('type') === type_from_form){ 
       return true; // a record with this data exists 
     } 
     return false; // there is no record in the store with this data 
    } 
); 

if(recordIndex != -1){ 
    alert("We have a duplicate, abort!"); 
} 
+1

Exactamente lo que necesitaba. ¡Gracias! –

Cuestiones relacionadas