我正在尝试从iOS客户端调用解析云函数,但response.success()函数似乎为空。我收到一条错误消息,说response.success不是服务器上的函数。
这是我的解析云函数:
Parse.Cloud.define("pruebaQuery", function(request, response) {
const query = new Parse.Query("grupo");
query.equalTo("name", request.params.grupoName);
query.find()
.then((results) => {
for (let i = 0; i < results.length; ++i) {
var grupoId = results[i].get("grupoId");
console.log("GrupoId: " + grupoId);
}
response.success("Success pruebaQuery");
})
.catch(() => {
response.error("grupo lookup failed");
});
});
这是我从iOS客户端调用的方式:
[PFCloud callFunctionInBackground:@"pruebaQuery" withParameters:@{@"grupoName": @"Kinder 3"}
block:^(NSString *object, NSError *error) {
if (!error) {
NSLog(@"CLOUDCode/SUCCESS: %@", object);
}
else {
NSLog(@"CLOUDCode/ERROR %@ code: %ld", error, (long)[error code]);
}
}];
有什么线索为什么response.success()函数不起作用?
答案 0 :(得分:4)
自解析服务器版本^ 3.0.0起,云代码不再使用回调。您可以使用promise或async函数。这是更改云功能的方法。
Parse.Cloud.define("pruebaQuery", async request=> {
const query = new Parse.Query("grupo");
query.equalTo("name", request.params.grupoName);
let results;
try{
results = await query.find();
for (let i = 0; i < results.length; ++i) {
let grupoId = results[i].get("grupoId");
console.log("GrupoId: " + grupoId);
}
} catch(error){
throw error.message;
}
});