Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检查并删除Parse.com类的重复项_Javascript_Parse Platform_Cloud - Fatal编程技术网

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

Javascript 检查并删除Parse.com类的重复项,javascript,parse-platform,cloud,Javascript,Parse Platform,Cloud,我在parse中有一个名为testItem的类,这里是这个类的快照 正如你所看到的,同一个项目出现了多次,但这是好的,因为它在不同的学校和餐厅,但这个项目出现了两次在同一Dinninghall编号和学校,所以它是一个重复,烤箱烤肉Potates是在Dinninghall编号:1和联合学院两次,所以它是一个重复。所以我试图写一个可以编码的函数来删除这个。以下是我到目前为止的情况: Parse.Cloud.job("removeDuplicateItems", function(request,

我在parse中有一个名为testItem的类,这里是这个类的快照

正如你所看到的,同一个项目出现了多次,但这是好的,因为它在不同的学校和餐厅,但这个项目出现了两次在同一Dinninghall编号和学校,所以它是一个重复,烤箱烤肉Potates是在Dinninghall编号:1和联合学院两次,所以它是一个重复。所以我试图写一个可以编码的函数来删除这个。以下是我到目前为止的情况:

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]);
}
}
Parse.Cloud.job(“RemovedUpplicateItems”),函数(请求、响应){
功能检查重复(学校){
var TestItem=Parse.Object.extend(“TestItem”);
var testItemsQuery=newparse.Query(TestItem);
testItemsQuery.equalTo('school',schoolArray[i]);
每个函数(testItem){
var item=testItem.get('item');
var school=testItem.get('school');
var diningHallNum=testItem.get('diningHallNumber');
var testItemsQueryCheck=newparse.Query(TestItem);
testItemsQueryCheck.equalTo('项目',项目);
testItemsQueryCheck.equalTo(“学校”,学校);
testItemsQueryCheck.equalTo('diningHallNumber',diningHallNum);
//然后删除项目
}
var schoolArray=[‘纽约联合学院’、‘奥尔巴尼大学’、‘伦斯勒理工学院’];
对于(var i=0;i
但这不起作用,因为它总是会成为现实。我需要一个方法来看看这是否是第二次出现这个项目。我将如何着手做这件事


提前感谢您的帮助!!!

您可以使用哈希表来跟踪重复项。例如:

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

@维托里诺·费尔南德斯我不太确定这和我的身份有什么关系asking@VitorinoFernandes我更想检查是否有副本,并将其删除。重复条目是第二和第三条,对吗?你想删除一条并保留一条吗?@VitorinoFernandes对,我只想删除副本并保留另一条。这很好,是吗保存最旧副本的方法?