2014-10-09 11 views
5

Tôi có một lớp học trong phân tích cú pháp gọi testItem đây là một snap shot của lớp nàyKiểm tra và xóa các bản sao Parse.com lớp

enter image description here

Như bạn có thể nhìn thấy cùng một mục đi lên nhiều thời gian nhưng đó là tốt bởi vì nó là ở các trường khác nhau và phòng ăn, nhưng mặt hàng này đi lên hai lần tại cùng một diningHallNumber và trường học vì vậy nó là một bản sao, Lò nướng Potates là tại diningHallNumber: 1 và Union College hai lần vì vậy nó là một bản sao. Vì vậy, tôi đang cố gắng viết một hàm mã có thể để loại bỏ điều này. Dưới đây là những gì tôi có cho đến nay:

Parse.Cloud.job("removeDuplicateItems", function(request, response) { 

function checkDuplicate(school) { 

    var TestItem = Parse.Object.extend("TestItem"); 
    var testItemsQuery = new Parse.Query(TestItem); 
    testItemsQuery.equalTo('school', schoolArray[i]); 


    testItemsQuery.each(function(testItem) { 
     var item = testItem.get('item'); 
     var school = testItem.get('school'); 
     var diningHallNum = testItem.get('diningHallNumber'); 

     var testItemsQueryCheck = new Parse.Query(TestItem); 
     testItemsQueryCheck.equalTo ('item', item); 
     testItemsQueryCheck.equalTo ('school', school); 
     testItemsQueryCheck.equalTo ('diningHallNumber', diningHallNum); 
     //then delete Item 

} 
var schoolArray = ['Union College (NY)', 'University of Albany', 'Rensselaer Polytechnic Institute']; 

for (var i = 0; i < schoolArray.length; i++) { 
    checkDuplicate(schoolArray[i]); 
} 
} 

nhưng điều này không làm việc vì nó sẽ luôn luôn trở thành sự thật Tôi cần một cách để xem nếu điều này là lần thứ hai mặt hàng này đã đưa ra. Tôi sẽ đi đâu để tới đó?

Cảm ơn bạn đã trợ giúp trước !!!

+0

http://stackoverflow.com/questions/20880781/parse-com-find-all-objects-belonging-to-a-user-with-objectid –

+0

@VitorinoFernandes im không khá chắc chắn như thế nào điều này hoàn toàn liên quan đến những gì tôi đang yêu cầu –

+0

@VitorinoFernandes Im cố gắng kiểm tra xem có trùng lặp hay không và loại bỏ nó. –

Trả lời

11

Bạn có thể sử dụng bảng băm để theo dõi các mục trùng lặp. Một cái gì đó như:

Parse.Cloud.job("removeDuplicateItems", function(request, status) { 
    Parse.Cloud.useMasterKey(); 
    var _ = require("underscore"); 

    var hashTable = {}; 

    function hashKeyForTestItem(testItem) { 
    var fields = ["item", "meal", "schoolMenu", "diningHallNumber", "school"]; 
    var hashKey = ""; 
    _.each(fields, function (field) { 
     hashKey += testItem.get(field) + "/" ; 
    }); 
    return hashKey; 
    } 

    var testItemsQuery = new Parse.Query("TestItem"); 
    testItemsQuery.each(function (testItem) { 
    var key = hashKeyForTestItem(testItem); 

    if (key in hashTable) { // this item was seen before, so destroy this 
     return testItem.destroy(); 
    } else { // it is not in the hashTable, so keep it 
     hashTable[key] = 1; 
    } 

    }).then(function() { 
    status.success("Migration completed successfully."); 
    }, function(error) { 
    status.error("Uh oh, something went wrong."); 
    }); 
}); 
+0

Điều này làm việc tuyệt vời, Có cách nào để giữ bản sao cũ nhất? –

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