Parse.com - вызов облачной функции из другой облачной функции делает request.user нулевым

Я написал облачную функцию ("newUserLog"), которую я вызываю из iOS SDK, и все работает правильно. облачная функция активно использует request.user.

Теперь я создал еще одну облачную функцию («doStats»), и в этой функции в некоторых сценариях мне нужно вызвать функцию «newUserLog».

Я делаю это с помощью Parse.Cloud.run ("newUserLog"). Then (function (logCreated) {...});

Но в функции «newUserLog» request.user имеет значение null. Как лучше всего решить эту проблему? Я знаю, что могу передать указатель request.user и получить его снова, но я боюсь, что это менее безопасно, и мне придется провести много рефакторинга.

Есть ли простой способ переноса request.user из одной облачной функции в другую?

Большое спасибо или


person Or Rapaport    schedule 03.08.2015    source источник


Ответы (2)


Не вызывайте одну облачную функцию из другой, если можете. Вместо этого создайте простые функции JS, которые содержат вашу повторно используемую логику и передают им набор параметров. Это намного проще в управлении и гораздо яснее, что на самом деле нужно этим функциям для работы.

person Wain    schedule 03.08.2015

измените код newUserLog на что-то вроде:

var user;
if( request.User )
{
    user = request.User;
}
else
{
    user = new Parse.User();
    user.id = request.params.userId;
}

В обоих случаях у вас есть в основном оболочка пользователя, и вам нужно будет выполнить выборку, если вам нужны остальные данные.

Измените метод doStats, чтобы передать userId в качестве параметра другой функции облачного кода:

Parse.Cloud.run("newUserLog", {userId:request.User.id});

or

var user = request.User;
Parse.Cloud.run("newUserLog", {userId:user.id});

При этом вы можете подумать о создании функции, вызываемой как doStats, так и newUserLog, которая не является функцией облачного кода, и передать ей соответствующие параметры из любой из ваших функций облачного кода.

person Jake T.    schedule 03.08.2015