我正在尝试实现一个解析云功能,该功能利用Mailgun API验证方法来获取电子邮件地址。我显然在做错事,因为当我从Objective-C调用此方法时,返回零,但是云日志(console.log)显示该方法正确执行-只是不返回任何值。我对使用Javascript进行异步/承诺思考非常陌生,所以我想知道是否有人可以看到我在这里出了错。
我的node.js Parse Server中出现问题的云功能是:
Parse.Cloud.define('validateEmail', async(request) => {
var mailgun = require('mailgun.js');
var mg = mailgun.client({
username: 'api',
key: process.env.MAILGUN_API_KEY,
public_key: process.env.MAILGUN_PUBLIC_KEY
});
mg.validate.get(request.params.email, {useMasterKey: true}).then(data => {
console.log(data);
return Promise.resolve(JSON.stringify(data));
})
.catch(err => {
console.log(err);
return Promise.resolve(error);
});
})
从objective-c代码中调用云函数为:
[PFCloud callFunctionInBackground:@"validateEmail" withParameters:@{@"email":user.email} block:^(NSString *bodydata, NSError *error) {
NSDictionary *body = [NSJSONSerialization JSONObjectWithData:[bodydata dataUsingEncoding:NSUTF8StringEncoding] options:0 error:nil];
NSLog(@"validateEmail : %@", body);
}];
答案 0 :(得分:1)
一旦我弄清楚了怎么做,就很容易解决了。这是我的工作解决方案:
Parse.Cloud.define('validateEmail', async (request) => {
var mailgun = require('mailgun.js');
var mg = mailgun.client({
username: 'api',
key: process.env.MAILGUN_API_KEY,
public_key: process.env.MAILGUN_PUBLIC_KEY
});
return mg.validate.get(request.params.email, true).then(data => {
return data})
.catch(err => handleParseError(err));
})