node.js - 解析云代码函数响应成功不是函数
问题描述
我正在尝试从 iOS 客户端调用 Parse Cloud 函数,但 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() 函数不起作用的任何线索?
解决方案
从解析服务器版本 ^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;
}
});
推荐阅读
- video - 转码可变帧大小的mkv文件时如何动态更改ffmpeg输出分辨率?
- javascript - 使用 jQuery 将所有 HTML 内容从一个 div 复制到另一个
- spring-boot - 找不到“org.springframework.mail.javamail.JavaMailSender”类型的 bean
- r - 我的数据集很大,我不知道如何用数据制作数字
- r - 检查 url 是否存在时识别转发
- scala - 如何将 KafkaAvroSerializer 传递给 Kafka ProducerRecord?
- selenium - 如果两个用户同时登录,将在远程 jenkins 服务器上捕获什么 selenium 屏幕截图?
- c# - 使用 IMessageHandlerContext 发送多条消息
- opendaylight - 192.168.56.3 无法联系遥控器
- angular - How to fix solve Expected a 'for-of' loop instead of a 'for' loop with this simple iteration in angular 8