Parse server облачная асинхронная функция не возвращает результат - PullRequest
0 голосов
/ 08 мая 2019

У меня есть асинхронная функция, которая должна возвращать true или false, но она выполнялась несколько раз в соответствии с журналами, а не один раз и заканчиваться, но возвращая сообщение об ошибке i/o failure вместо ожидаемого значения.

Parse.Cloud.define("updateMatch", async (request) => {
    const query = new Parse.Query("Match");
    query.equalTo("league", request.params.league);
    const results = await query.find();

    var match = null;
    if (results.length > 0) {
        match = results[0];
    }else{
          var Match = Parse.Object.extend("Match");
            match = new Match();
            match.set("groupId", request.params.Id);
    }
     match.set("stadium",request.params.stadium);
     var saved = await match.save(null, { useMasterKey: true });
    return true;
});

Когда я изменяю асинхронную функцию на нормальную функцию, она выполняется один раз и возвращает ожидаемое значение, равное true

 Parse.Cloud.define("updateMatch", function(request,response){
        const query = new Parse.Query("Match");
        query.equalTo("league", request.params.league);
        query.find().then((results)=>{
         var match = null;
        if (results.length > 0) {
            match = results[0];
        }else{
              var Match = Parse.Object.extend("Match");
                match = new Match();
                match.set("groupId", request.params.Id);
        }
         match.set("stadium",request.params.stadium);
         match.save(null, { useMasterKey: true });
        return response.success(true);
        });
    });

Это способ, которым я вызываю функцию с Android

val params = HashMap<String, Any>()
    params["league"] = "EPA"
    params["groupId"] = "A"
    params["stadium"] = "Etihad"

    ParseCloud.callFunctionInBackground("updateMatch", params,FunctionCallback { success, e ->
       AppLogger.error("success? ${success} error is ${e?.message}")

      }

В чем может быть проблема с асинхронной функцией?

1 Ответ

0 голосов
/ 10 мая 2019

Я пытался реализовать асинхронные функции в версии сервера синтаксического анализа 2.8.2, что не удалось, но при обновлении до последней версии мои асинхронные функции теперь возвращают ожидаемые результаты.

Чтобы обновить все устаревшие модули, включая parse-server, до последних версий, можно использовать приведенную ниже команду. -g означает глобальные модули. можно не обновлять только устаревшие локальные модули

npm i -g npm-check-updates && ncu -u && npm i
...