问题
I have a parse-server deployed with Heroku (from my GitHub repo) and hosted by mongoLab. I am attempting to send scheduled push notifications within my app and kue seems to be the most viable option. However, as I am very unfamiliar with it, I am not sure the way to approach it. I believe I have correctly installed kue on my server (through GitHub). Now, I would like to schedule this code to be executed at a date in the future:
Parse.Cloud.define("sendPush", function(request, response) {
var pushQuery = new Parse.Query(Parse.Installation);
pushQuery.equalTo('username', request.params.targetUsername);
Parse.Push.send({
where: pushQuery, // Set our Installation query
data: {
alert: 'Hello!',
badge: 'Increment',
sound: 'PopDing.caf'
},
}, { success: function() {
console.log("#### PUSH OK");
}, error: function(error) {
console.log("#### PUSH ERROR" + error.message);
}, useMasterKey: true});
});
If I am approaching this the correct way, then I need the code to simply schedule a job (the code above) to be executed at a specified time in the future. I do not the code to be scheduled to run regularly or at intervals, just once at the specified time in the future. An answer or any advice would be greatly appreciated, thanks!
回答1:
Here is an example how you can accomplish scheduling this task with kue only once at a specific time in the future: (after 12 hours)
var kue = require( 'kue' );
// create our job queue
var jobs = kue.createQueue();
// one minute
var minute = 60000;
var job= jobs.create( 'parseCloud', {
alert: 'Hello!',
badge: 'Increment',
sound: 'PopDing.caf'
} ).delay( minute * 60 * 12)
.priority( 'high' )
.save();
job.on( 'complete', function () {
console.log( 'renewal job completed' );
} );
jobs.process( 'parseCloud', function ( job, done ) {
var pushQuery = new Parse.Query(Parse.Installation);
pushQuery.equalTo('username', request.params.targetUsername);
Parse.Push.send({
where: pushQuery, // Set our Installation query
data: {
alert: job.data.alert,
badge: job.data.badge,
sound: job.data.sound
},
}, { success: function() {
console.log("#### PUSH OK");
done();
}, error: function(error) {
console.log("#### PUSH ERROR" + error.message);
done();
}, useMasterKey: true});
} );
// start the UI
kue.app.listen( 3000 );
console.log( 'UI started on port 3000' );
来源:https://stackoverflow.com/questions/37103639/how-to-schedule-a-job-with-kue-on-parse-server