Еще в обновлении Parse Server 3.0 был добавлен request.context для передачи данных между BeforeSave и AfterSave, как описано здесь:
https://docs.parseplatform.org/cloudcode/guide/#using -request-context
Однако у меня возникли некоторые проблемы с пониманием того, как и когда Parse запускает этот код в примере.
const beforeSave = function beforeSave(request) {
const { object: role } = request;
// Get users that will be added to the users relation.
const usersOp = role.op('users');
if (usersOp && usersOp.relationsToAdd.length > 0) {
// add the users being added to the request context
request.context = { buyers: usersOp.relationsToAdd };
}
};
const afterSave = function afterSave(request) {
const { object: role, context } = request;
if (context && context.buyers) {
const purchasedItem = getItemFromRole(role);
const promises = context.buyers.map(emailBuyer.bind(null, purchasedItem));
item.increment('orderCount', context.buyers.length);
promises.push(item.save(null, { useMasterKey: true }));
Promise.all(promises).catch(request.log.error.bind(request.log));
}
};
в других примерах функции облачного кода запускаются через Parse.Cloud.beforeSave или Parse.Cloud.afterSave. В приведенном выше примере функции beforeSave присвоена
const beforeSave.
Почему это было сделано и должно ли это быть размещено внутри main. js верхнего уровня или внутри другой функции?