2015-03-22 2 views
0

Вот простая задача, которую я хотел бы выполнить на Parse.com с помощью Cloud Code. Задача состоит в том, чтобы удалить Unit и что с ним связано.Попытка использования обещаний для удаления записей

У одной единицы есть несколько предложений, связанных с ней, и каждое предложение имеет одно или несколько переводов. Поэтому, когда задача выполняется, модуль, а также Приговор и переводы должны быть удалены.

У меня есть сильное чувство, что я должен использовать обещания (и соединить их), чтобы делать то, что хочу, в хорошей манере.

Ниже приведен код, который я написал, но он работает только частично (переводы удалены, а не остальные).

Parse.Cloud.define("deleteUnitAndDependencies", function(request, response) { 
    var unitListQuery = new Parse.Query("UnitList"); 
    unitListQuery.equalTo("objectId", request.params.unitID); 
    unitListQuery.equalTo("ownerID", request.params.userID); 
    unitListQuery.find().then(function(resUnit) { 
     var sentenceListQuery = new Parse.Query("SentenceList"); 
     sentenceListQuery.equalTo("unit", resUnit[0]); 
     return sentenceListQuery.find(); 
    }).then(function(resSentence) { 
     var translatListQuery = new Parse.Query("TranslatList"); 
     for (i = 0; i < resSentence.length; i++) { 
      var query = new Parse.Query("TranslatList"); 
      query.equalTo("sentence", resSentence[i]); 
      translatListQuery = Parse.Query.or(translatListQuery, query); 
     } 
     return translatListQuery.find(); 
    }).then(function(resTranslat) { 
     for (iT = 0; iT < resTranslat.length; iT++) { 
      resTranslat[iT].destroy({}); 
     } 
    }); 
}); 

Я, конечно, нужно добавить несколько строк кода, как:

resSentence[x].destroy({}); 

и:

resUnit[0].destroy({}); 

Проблема в том, что я не совсем понимаю, где адекватное место для этого ,

+0

Пожалуйста, правильно отформатируйте код. –

+0

Другими словами? – Michel

+0

Ваш код не имеет хорошо отступов и его трудно прочитать, что заставляет его отвечать на него. –

ответ

1

Соберите объекты для удаления, затем используйте Parse.Object.destroyAll(someArray);, чтобы удалить все сразу.

1

В подобных случаях мне нравится использовать переменную области видимости для хранения вещей для последующего использования.

var scope = { 
    sentences: [], 
    units: [] 
}; 

// later inside then block... 
    scope.sentences.push(resSentence[i]); 

// ...now we have them collected safely 
.then(function() { 
    return Parse.Object.destroyAll(scope.sentences); 
})