2015-11-08 2 views
-2

У меня есть таблица инвентаря в моей базе данных анализа с двумя соответствующими полями Как я могу сделать это с помощью swift? Я создаю облака код с Js нижевызов функции в Xcode

Parse.Cloud.define("retrieveproducts", function(request, response) { 
 
    var productDictionary ={}; 
 
    var query = new Parse.Query("Post"); 
 
    query.each(
 
    function(result){ 
 
     var num = result.get("quantity"); 
 
     if(result.get("productid") in productDictionary){ 
 
      productDictionary[result.get("productid")] += num; 
 
     } 
 
     else{ 
 
      productDictionary[result.get("productid")] = num; 
 
     } 
 
    }, { 
 
     success: function() { 
 
      response.success(productDictionary); 
 
     }, 
 
     error: function(error) { 
 
      response.error("Query failed. Error = " + error.message); 
 
     } 
 
    }); 
 
});

Я хочу, чтобы вызвать эту функцию: но у меня есть некоторые проблемы, назвав его с этим вызовом

let params = ["productid": String(), "string": String()] 
 
    
 
PFCloud.callFunctionInBackground("retrieveproducts", withParameters: params) { 
 
      (ratings, error) in 
 
      if (error == nil) { 
 
       print("\(params)") 
 
      } 
 
     }

+0

Не могли бы вы рассказать о том, в чем проблема? Какую ошибку вы получаете? Первое, что приходит в голову, это то, что вы передаете пустые строки в свой код облака. Хотите также добавить то, что вы хотите? – MQLN

+0

Ваш ответ на этот пост [link] (http://stackoverflow.com/questions/33580356/group-by-sum-aggregate-query-with-parse-swift?rq=1) Я создал раньше, но никто не ответил мне : – Mams1101

+0

У меня нет никакой ошибки, но у меня нет никаких данных, и это невозможно ... – Mams1101

ответ

0

Свифт Код

let reportedId = "someUsersObjectId" 
    PFCloud.callFunctionInBackground("suspendUser", withParameters: ["userId": reportedId]) { 
          (result, error) in 
          if (error == nil) { 
           print(result) 
          } 
         } 

Облако Код:

Parse.Cloud.define("suspendUser", function(request, response) { 
     Parse.Cloud.useMasterKey() 
     //var User = Parse.Object.extend(Parse.User); 
     //var user = new User(); 
     //user.id = request.params.userId; 
     user = new Parse.User({id:request.params.userId}) 
     user.fetch().then(function() { 
       user.set("suspended", true) 
       user.save().then(function(newMostRecentAgain) { 
        response.success("Cloud code called! " + request.params.userId) 
        }, function(error) { 
        // The save failed. Error is an instance of Parse.Error. 
        }) 
      }); 
     }); 

Итак, позвольте мне вас через то, что происходит здесь, так что вы можете лучше понять, как сделать ваш код (так как я can'e точно знаю, что вы хотите сделать) ,

1: в моем Swift-коде, с параметрами, как вы передаете информацию в свой код облака, и он находится в стиле словаря. Здесь я передаю пользователя, я хочу сообщить объект objectId.

PFCloud.callFunctionInBackground("suspendUser", withParameters: ["userId": reportedId]) { 

2: В моем облаке кода, я получаю Синтаксическая объект пользователя я сообщил с ObjectId я передаю с Params. Поскольку вы не можете передать весь объект в код облака, я перестраиваю объект с помощью объекта objectId и user.Fetch(), который вы видите.

user = new Parse.User({id:request.params.userId}) 

3: в моем коде Cloud, после того, как я успешно сохранить свой пользователь после изменения его значение для «приостановлено», я отправить строку обратно пользователю IOS.

response.success("Cloud code called! " + request.params.userId) 

4: Наконец, в моем Swift кодекса, я затем распечатать возвращенную строку с успехом

print(result) 

ли это сделать вещи немного более ясно? Дайте мне знать, если что-то не имеет смысла.

Смежные вопросы