Проверьте, существует ли аналогичная запись в магазине, чтобы избежать дублирования - PullRequest
8 голосов
/ 07 ноября 2010

У меня есть JsonStore со следующими полями:

id
date
time
type

У меня есть форма, которая собирает три поля (date, time, type) и вставляет новую запись вмагазин (сохраняю магазин отдельно).Я хотел бы выполнить проверку, если в хранилище уже существует запись с той же комбинацией значений полей, чтобы избежать дублирования записей.

Мне удалось проверить дубликаты идентификаторов в другом магазине, например:

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

Я не знаю, как проверить магазин, чтобы увидеть, совпадают ли несколько значений полей.

1 Ответ

16 голосов
/ 07 ноября 2010

Я использовал findBy( Function fn, [Object scope], [Number startIndex] ) магазина для этой ситуации.Функция fn вызывается для каждой записи в хранилище, и текущая запись и соответствующий ей идентификатор передаются в функцию.Таким образом, вы можете использовать поля текущей записи для сравнения с каждым полем формы.

Вот пример для вашей ситуации:

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!");
}
...