Фоновое задание с использованием parse-server и планировщика Heroku

Использование parse-server и heroku для моего приложения для Android. Хотите создать фоновые задания, подобные тем, которые ранее предлагались Parse.com, но, похоже, не можете заставить их работать. В папку parser-server-example я добавил файл jobs.js, содержащий следующее:

var Parse = require('parse/node');
Parse.initialize('my_app_id');
Parse.serverURL = 'https://random-name.herokuapp.com/parse';

function saveSomething(){
var obj = new Parse.Object('my_class', 'random');
obj.save(null, {
    success: function(place){
        console.log("Success!!");
    },
    error: function(place, error){
        console.log("Fail: " + error.message);
    }
});
}

function sayHello() {
console.log('Hello');
}

sayHello();
saveSomething();

sayHello() работает нормально, но saveSomething() получает сообщение «ошибка: неавторизованный», когда я запускаю: heroku run node jobs.js. Итак, у меня есть 2 вопроса.

1. Является ли это правильным способом создания фонового задания с использованием parse-server и heroku?

2. Что-то не так с кодом «jobs.js»/что-то, что в целом нужно сделать по-другому, чтобы выполнить задачу фонового задания?

(Попытался добавить ключ javascript в Parse.initialize('app-id', 'ключ javascript'); безуспешно)


person Slagathor    schedule 20.02.2016    source источник
comment
Если кому интересно, я написал статью, как получить фоновые задания с помощью kue: andreygordeev.com/2016/08/04/   -  person Andrey Gordeev    schedule 18.09.2016


Ответы (1)


Решения заключались в том, чтобы добавить «Parse.Cloud.useMasterKey();» после строки "Parse.serverURL = 'https://random-name.herokuapp.com/parse" и добавьте главный ключ приложения в «Parse.initialize('my_app_id', 'js-key', 'master-key'); получить правильное разрешение.

var Parse = require('parse/node');
Parse.initialize('app-id', 'js-key','master-key');
Parse.serverURL = 'https://random-name.herokuapp.com/parse/';
Parse.Cloud.useMasterKey();

function saveSomething(){
var MyClass = Parse.Object.extend("MyClass");
var myclass = new MyClass();
myclass.set("columnName", "value");
myclass.save({
    success: function(place){
        console.log("Success!!");
    },
    error: function(place, error){
        console.log("Fail: " + error.message);
    }
});
}

saveSomething();

Надеюсь, это поможет кому-то.

person Slagathor    schedule 21.02.2016
comment
и вам удалось заставить его работать с планировщиком heroku? Моя функция работает с heroku run node jobs.js --app appName. Теперь я хотел бы использовать его с планировщиком Heroku, вы можете мне помочь? Что я должен написать в этой строке $ ? - person Vjardel; 01.04.2016
comment
Вам просто нужно написать node jobs.js в строке $, как если бы вы запускали его локально, поскольку вы просто запускаете его на другом компьютере. Тогда вы можете просто установить свою частоту, и тогда она будет работать. - person Slagathor; 02.04.2016
comment
@Slagathor Я планирую выполнить фоновую задачу на Heroku, аналогичную этому вопросу. Какова команда для установки частоты моей задачи, например, раз в час? - person Geeroz; 21.05.2016
comment
@Geeroz Если вы используете планировщик Heroku, вы можете просто установить временной интервал на панели управления Heroku. Просто нажмите Heroku Scheduler на своей панели инструментов, затем нажмите «Изменить», а затем выберите «ежечасно» в раскрывающемся меню. - person Slagathor; 21.05.2016