Parse server облачная асинхронная функция не возвращает результат
У меня есть асинхронная функция, которая должна вернуть 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 ответ
Я пытался реализовать асинхронные функции в версии parse-server 2.8.2
что не удалось, но когда я обновился до последней версии, мои асинхронные функции теперь возвращают ожидаемые результаты.
Чтобы обновить все устаревшие модули, включая parse-server, до последних версий, можно использовать команду ниже. -g
означает глобальные модули. его можно не использовать, чтобы обновлять только устаревшие локальные модули
npm i -g npm-check-updates && ncu -u && npm i