【问题标题】:How to schedule a job with kue on parse-server?如何在解析服务器上使用 kue 安排作业?
【发布时间】:2016-05-08 18:55:42
【问题描述】:

我有一个使用 Heroku 部署的解析服务器(来自我的 GitHub 存储库)并由 mongoLab 托管。我正在尝试在我的应用程序中发送预定的推送通知,而 kue 似乎是最可行的选择。但是,由于我对它非常陌生,我不确定如何接近它。我相信我已经在我的服务器上正确安装了 kue(通过 GitHub)。现在,我想安排这段代码在未来的某个日期执行:

    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});

    });

如果我以正确的方式处理这个问题,那么我需要代码来简单地安排一个作业(上面的代码)在未来的指定时间执行。我没有将代码安排为定期或间隔运行,只是在将来的指定时间运行一次。 非常感谢您的回答或任何建议,谢谢!

【问题讨论】:

    标签: javascript node.js push-notification parse-server kue


    【解决方案1】:

    这是一个示例,您可以如何使用 kue 完成此任务的调度 未来特定时间仅一次:(12 小时后)

    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' );
    

    【讨论】:

    • 非常感谢您的回复!我觉得好像我很接近。但是,我已经使用了这个确切的代码并将其放置在我从设备调用的云函数 (Parse.Cloud.define("sendPushToSpecificUser", function(request, response) { "code you provided" });) 中。然后我收到一个错误并且没有发送通知。关于为什么会发生这种情况的任何想法?
    • Hi Tal Avissar,1. 在哪里使用这个源代码? 2. 如果我想在启动 parse-server 时启动作业,代码会是什么样子? 3.是否需要这行代码“due.app.listen(3000);?
    猜你喜欢
    • 1970-01-01
    • 2016-01-17
    • 2017-01-06
    • 2010-11-11
    • 2021-07-02
    • 2013-05-27
    • 1970-01-01
    • 2020-05-05
    • 1970-01-01
    相关资源
    最近更新 更多