我已经编写了一个云函数("newUserLog"),我从iOS软件开发工具包中调用它,一切都正常工作。云函数大量使用"request.user“。
现在我做了另一个云函数("doStats"),在某些情况下,在该函数中,我需要调用"newUserLog“函数。
我用Parse.Cloud.run("newUserLog").then(function(logCreated){做这件事... });
但是在"newUserLog“函数中,request.user为null。解决此类问题的最佳实践是什么?我知道我可以传递request.user指针并再次获取它,但我担心它不太安全,我将不得不进行大量的重构。
有没有一种简单的方法将request.user从一个云函数转移到另一个云函数?
非常感谢或者
发布于 2015-08-03 19:21:11
如果可以的话,不要从一个云函数调用另一个云函数。相反,创建普通的JS函数来保存您的可重用逻辑,并向它们传递一组参数。这更容易管理,也更清楚地了解这些功能实际需要什么才能运行。
发布于 2015-08-04 06:34:51
将newUserLog代码更改为如下所示:
var user;
if( request.User )
{
user = request.User;
}
else
{
user = new Parse.User();
user.id = request.params.userId;
}在这两种情况下,您基本上都有用户的shell,如果您想要剩余的数据,则需要执行一次提取。
更改您的doStats方法,将userId作为参数传递给其他云代码函数:
Parse.Cloud.run("newUserLog", {userId:request.User.id});或
var user = request.User;
Parse.Cloud.run("newUserLog", {userId:user.id});也就是说,您可以考虑创建一个既可由doStats调用又可由newUserLog调用的非云代码函数,并将相关参数从您的任一云代码函数传递给它。
https://stackoverflow.com/questions/31783718
复制相似问题