检查存储中是否存在类似记录以避免重复

时间:2010-11-06 21:26:02

标签: extjs store

我有一个包含以下字段的JsonStore:

id
date
time
type

我有一个表单收集三个字段(datetimetype)并将新记录插入商店(我单独保存商店)。我想检查商店中是否已存在具有相同字段值组合的记录,以避免重复输入。

我已设法检查另一个商店中的重复ID,如下所示:

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

我不知道如何检查商店以查看多个字段值是否匹配。

1 个答案:

答案 0 :(得分:16)

我已经使用Store的findBy( Function fn, [Object scope], [Number startIndex] )来解决这种情况。为存储中的每条记录调用函数fn,并将当前记录及其相应的id传递给函数。因此,您可以使用当前记录的字段与每个表单字段进行比较。

以下是您的情况示例:

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