检查并删除重复的Parse.com类

5 javascript cloud parse-platform

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

在此输入图像描述

正如你所看到的同一个项目出现多时间,但是这是很好的,因为它是在不同的学校和食堂,但这个项目在相同diningHallNumber和学校来了两次,所以它是一个重复的,烤箱烤Potates是diningHallNumber: 1和Union College两次,所以它是重复的.所以我试着编写一个can代码函数来删除它.这是我到目前为止:

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]);
}
}
Run Code Online (Sandbox Code Playgroud)

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

我在这里先向您的帮助表示感谢!!!

kns*_*shn 11

您可以使用哈希表来跟踪重复项.就像是:

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.");
  });
});
Run Code Online (Sandbox Code Playgroud)