Я немного смущен тем, где разместить response.success() при использовании серийных обещаний.Последовательные обещания и ответ. Успех в облачном коде
В ситуации: У меня есть облачная функция, которая принимает массив адресов электронной почты и текущего пользователя. Эта функция выполняет следующие функции:
- Находит текущего пользователя на основе идентификатора объекта пользователя.
- перебирает массив электронных адресов
- Найти, если есть существующий пользователь для каждого конкретного адреса электронной почты
- Если существующий пользователь, мы проверяем, если существующий пользователь и текущий пользователь друзья
- Если они не друзья, это создает дружбу.
Теперь, когда я запускаю эту функцию без response.success(), он делает именно то, что я ожидаю его и дружеские записи создаются. Но независимо от того, где я размещаю ответ в коде, я получаю сообщение response.success и ни одно из сериализованных обещаний не выполняется.
Почему результирующий успех/сбой имеет значение: я выполняю эту функцию из приложения iOS, и я хотел бы правильно обрабатывать случаи успеха или сбоя правильно на стороне iOS.
Вот функция облака:
Parse.Cloud.define("friendExistingUsers", function(request, response) {
// Get our parameters
var addresses = request.params.emailAddresses;
var userId = request.params.user;
// Query for our user
var userQuery = new Parse.Query("User");
userQuery.equalTo("objectId", userId)
userQuery.first().then(function(currentUser) {
// if we find the user, walk the addresses
var promise = Parse.Promise.as("success");
_.each(addresses, function(address) {
console.log(address);
// add a then to our promise to handle whether a relationship is
// being created.
promise = promise.then(function() {
// find if there is a user for that address
var emailQuery = new Parse.Query("User");
emailQuery.equalTo("email", address);
emailQuery.first().then(function(addressUser) {
if (typeof addressUser != 'undefined') {
// found one.
console.log(addressUser);
// figure out if our current user and this user are
// friends.
var friendQuery = new Parse.Query("FVFriendship");
friendQuery.equalTo("from", currentUser);
friendQuery.equalTo("to", addressUser);
friendQuery.first().then(function(relationship) {
if (typeof relationship != 'undefined') {
// if they are, we need to pass.
console.log("Found a relationship: " = relationship)
} else {
// They are not. Add the friendship
var Friendship = Parse.Object.extend("FVFriendship");
var friendship = new Friendship();
friendship.set("from", currentUser);
friendship.set("to", addressUser);
friendship.save().then(function(result) {
console.log("Created a friendship: " + result)
});
};
});
} else {
// we did not find a user for that address
console.log("No user for " + address);
};
});
});
});
console.log(promise);
return promise;
}).then(function() {
response.success("success");
});
});
Заранее спасибо. Дайте мне знать, если есть что-то еще, что я могу добавить.
Это не совсем фрагмент кода. Попробуйте передать параметр вашим методам '' then (function (data) {console.log (data.success)}) '', чтобы вы могли передать значение обещания –