Parse Cloud 函数中的零返回
Posted
技术标签:
【中文标题】Parse Cloud 函数中的零返回【英文标题】:Nil return in Parse Cloud function 【发布时间】:2018-11-21 21:08:21 【问题描述】:我正在尝试实现一个 Parse 云函数,该函数利用 Mailgun API 验证方法来验证电子邮件地址。我显然做错了什么,因为当我从 Objective-c 调用这个方法时,我得到了 nil,但是云日志(console.log)显示该方法正在正确执行——只是没有返回任何值。我对 javascript 中的 async/Promise 思维很陌生,所以我想知道是否有人能看到我在这里出错的地方。
我在 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);
];
【问题讨论】:
推荐大家阅读云码documentation。 【参考方案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));
)
【讨论】:
以上是关于Parse Cloud 函数中的零返回的主要内容,如果未能解决你的问题,请参考以下文章
Parse.Cloud.httpRequest 使用 POST 方法返回“未定义”而不是响应
response.error不是Parse Cloud Code中的函数