2010-11-06 5 views
8

Ho un JsonStore con i seguenti campi:Controllare se il record simile esiste in negozio per evitare duplicati

id 
date 
time 
type 

Ho una forma che raccoglie i tre campi (date, time, type) e inserisce un nuovo record nel negozio (salvo il negozio separatamente). Vorrei eseguire un controllo se un record con la stessa combinazione di valori di campo esiste già nel negozio per evitare voci duplicate.

sono riuscito a verificare la presenza di ID duplicati di un altro negozio come questo:

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

non so come controllare un negozio per vedere se più valori di campo partita.

risposta

16

Ho usato il negozio findBy(Function fn, [Object scope], [Number startIndex]) per questa situazione. La funzione fn viene richiamata per ogni record nell'archivio e il record corrente e il relativo ID vengono passati alla funzione. In questo modo è possibile utilizzare i campi del record corrente per confrontarli con ogni campo del modulo.

Ecco un esempio per la vostra situazione:

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

Esattamente quello che mi serviva. Grazie! –

Problemi correlati