Javascript 检查并删除Parse.com类的重复项
我在parse中有一个名为testItem的类,这里是这个类的快照 正如你所看到的,同一个项目出现了多次,但这是好的,因为它在不同的学校和餐厅,但这个项目出现了两次在同一Dinninghall编号和学校,所以它是一个重复,烤箱烤肉Potates是在Dinninghall编号:1和联合学院两次,所以它是一个重复。所以我试图写一个可以编码的函数来删除这个。以下是我到目前为止的情况:Javascript 检查并删除Parse.com类的重复项,javascript,parse-platform,cloud,Javascript,Parse Platform,Cloud,我在parse中有一个名为testItem的类,这里是这个类的快照 正如你所看到的,同一个项目出现了多次,但这是好的,因为它在不同的学校和餐厅,但这个项目出现了两次在同一Dinninghall编号和学校,所以它是一个重复,烤箱烤肉Potates是在Dinninghall编号:1和联合学院两次,所以它是一个重复。所以我试图写一个可以编码的函数来删除这个。以下是我到目前为止的情况: Parse.Cloud.job("removeDuplicateItems", function(request,
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对,我只想删除副本并保留另一条。这很好,是吗保存最旧副本的方法?