2010-11-06 33 views
8

Tôi có một JsonStore với các lĩnh vực sau:Kiểm tra xem kỷ lục tương tự tồn tại trong cửa hàng để tránh trùng lặp

id 
date 
time 
type 

Tôi có một hình thức thu thập ba lĩnh vực (date, time, type) và chèn một kỷ lục mới vào cửa hàng (tôi lưu cửa hàng riêng). Tôi muốn thực hiện kiểm tra nếu một bản ghi có cùng một kết hợp giá trị trường đã tồn tại trong cửa hàng để tránh các mục trùng lặp.

tôi đã quản lý để kiểm tra xem có trùng lặp ID trong một cửa hàng như thế này:

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

Tôi không biết làm thế nào để kiểm tra một cửa hàng để xem nếu có nhiều giá trị trường phù hợp.

Trả lời

16

Tôi đã sử dụng Cửa hàng findBy(Function fn, [Object scope], [Number startIndex]) cho trường hợp này. Hàm fn được gọi cho mỗi bản ghi trong cửa hàng và bản ghi hiện tại và id tương ứng của nó được chuyển vào hàm. Do đó bạn có thể sử dụng các trường của bản ghi hiện tại để so sánh với từng trường biểu mẫu.

Dưới đây là một ví dụ cho tình hình của bạ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

Chính xác những gì tôi cần. Cảm ơn bạn! –

Các vấn đề liên quan