Javascript - 在课堂上删除重复项

时间:2014-10-09 23:20:48

标签: javascript parse-platform cloud

我有一个名为testItem的解析类,这是这个类的快照

enter image description here

所以我试着编写一个可以代码的函数来删除它。所以没有更多重复。这就是我试过的

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]);
}
}

但是这不起作用,因为它总是会成真我需要一种方法来看看这是否是第二次出现这个项目。我该怎么做呢?

提前感谢您的帮助!!!

修改

如果我有这个数据

enter image description here 它删除了一个奶酪项目和项目?

1 个答案:

答案 0 :(得分:1)

这应该有效

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.");
  });
});
相关问题