首页 > 解决方案 > 解析服务器云异步函数不返回结果

问题描述

我有一个应该返回的异步函数,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}")

      }

异步功能可能有什么问题?

标签: javascriptandroidasync-awaitparse-serverparse-cloud-code

解决方案


我试图在解析服务器版本中实现异步函数2.8.2但失败但当我更新到最新版本时,我的异步函数现在返回预期结果。

要将所有过时的模块(包括 parse-server)更新到最新版本,可以使用以下命令。-g表示全局模块。可以省略只更新过时的本地模块

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

推荐阅读