Я пытаюсь создать приложение, которое имеет логику ежедневных котировок и показывает котировки. Он должен выбрать random object
в моем parse class
и показать их пользователю. Если пользователи увидели сегодняшний объект, он не должен видеть другой случайный объект в в тот же день.
Я сделал этот алгоритм с Swift
. Но я думаю, Cloud Code
и Background Job
- более понятный и правильный способ сделать этот алгоритм. Я исследовал background job
руководства и т. Д., Чтобы сделать это, но не смог, потому что у меня недостаточно JavaScript
знаний для этого. Все, что я создал Background Job
в моем Parse server
, вот так;
Parse.Cloud.define('todaysMentor', async (request) => {
var Mentor = Parse.Object.extend('Mentor');
var countQuery = new Parse.Query(Mentor);
const count = await countQuery.count();
const query = new Parse.Query('Mentor');
const randomInt = Math.floor(Math.random() * count);
query.equalTo('position', randomInt);
query.limit(1); // limit to at most 10 results
const results = await query.find();
const Today = Parse.Object.extend('Today');
const today = new Today();
today.set('mentor', results[0]);
today.save()
.then((today) => {
// Execute any logic that should take place after the object is saved.
}, (error) => {
});
return results;
});
Parse.Cloud.job('pickTodaysMentor', async function(request) {
const { params, headers, log, message } = request;
Parse.Cloud.run('todaysMentor', (request) => {
if (!passesValidation(request.object)) {
throw 'Ooops something went wrong';
}
});
});
Я хочу получить случайный Mentor
объект из моего Mentor
класса и добавить его в Today
класс. Таким образом, я могу получить объект Today в моих мобильных приложениях. Первая функция работает хорошо, когда я вызываю ее с Swift
.
Мой сервер регистрирует вот так;
May 13, 2019, 22:22:45 +03:00- ERROR
(node:41) UnhandledPromiseRejectionWarning: TypeError: Parse.Cloud.run is not a function
at Parse.Cloud.job (/opt/app-root/src/repo/cloud/functions.js:28:19)
at Object.agenda.define [as fn] (/opt/app-root/src/build/agenda/agenda.js:74:25)
at process._tickCallback (internal/process/next_tick.js:68:7)
May 13, 2019, 22:22:45 +03:00- ERROR
(node:41) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 4)
Я погуглил эту ошибку и узнал, что это синтаксическая ошибка, с Parse 3.0
они изменили синтаксис некоторых функций. Как я могу это исправить? или У вас есть предложения по созданию этого алгоритма?
Спасибо!