解析云函数中的 Nil return
Nil return in Parse Cloud function
我正在尝试实现一个 Parse 云函数,该函数对电子邮件地址使用 Mailgun API 验证方法。我显然做错了什么,因为当我从 objective-c 调用此方法时,我得到 nil 返回,但云日志 (console.log) 显示该方法正在正确执行 - 只是没有返回任何值。我对 async/Promise 在 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);
}];
一旦我弄清楚如何解决,这个问题就很容易解决了。这是我的工作解决方案:
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));
})
我正在尝试实现一个 Parse 云函数,该函数对电子邮件地址使用 Mailgun API 验证方法。我显然做错了什么,因为当我从 objective-c 调用此方法时,我得到 nil 返回,但云日志 (console.log) 显示该方法正在正确执行 - 只是没有返回任何值。我对 async/Promise 在 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);
}];
一旦我弄清楚如何解决,这个问题就很容易解决了。这是我的工作解决方案:
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));
})