解析云代码作业功能优化 [英] Parse Cloud Code Job Function Optimization

查看:63
本文介绍了解析云代码作业功能优化的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一份正在运行的云代码工作.当我手动运行作业时,它似乎有效.我认为调度在设置运行频率方面存在问题,所以我认为它与实际代码无关.也许我错了,但很好奇是否有更有效的方法来轮询我的解析类.我有一个应用程序,我试图在其中查找从 now() 开始的下一小时内即将到来的预订,如果有向该类中的用户发送推送通知.同样,这会运行,但我认为我可以优化我的查询以仅获取该时间范围内的项目,而不是具有特定状态的更多项目.

I have a job on cloud code that I am running. It seems to work when I manually run the job. I think scheduling is posing an issue with its setup an frequency of running so I think it's unrelated to the actual code. Perhaps I'm wrong, but curious if there's a more efficient way to poll my parse class. I have an app where I am trying to find bookings that are coming up within the next hour from now(), and if there are send a push notification to the users within that class. Again, this runs but I think I may be able to optimize my query to only get items within that time frame vs more items that have a certain status.

Parse.Cloud.job("updateReviews", async (request) => {

var resultCount = 0;

// Query all bookings with a status of confirmed
var query = new Parse.Query("bookings");
query.equalTo("status", "confirmed");
const results = await query.find({useMasterKey:true});

results.forEach(object => {

    var users = [];
    users.push(object.get("buyerId"));
    users.push(object.get("placeOwner"));

    var today = new moment();
    var hourFrom = moment().add(1, 'hours');
    var startTime = moment(object.get("startTime"));

    if (startTime.isBetween(today, hourFrom)) {
    
        console.log("BETWEEN THE TIMEFRAME");
        resultCount += 1;

        users.forEach(sendPush);

    } else {
        
        console.log("NOT BETWEEN THE TIME FRAME, PASS OVER");
    }
});


return ("Successfully sent " + resultCount + " new notifications!");

});

function sendPush(value, index, array) {

function sendPush(value, index, array) {

var pushType = "bookingConfirmed";

let query = new Parse.Query(Parse.Installation);
query.equalTo("userId", value);
return Parse.Push.send({
    where: query,
    data: {
        title: "New Booking Coming Up",
        alert: "You have a booking coming up soon!",
        pushType
    }
},{useMasterKey: true});

}

推荐答案

是的.它可能会好得多.我会尝试这样的事情:

Yes. It could be much better. I'd try something like this:

Parse.Cloud.job('updateReviews', async () => {
  // Query all bookings with a status of confirmed
  const query = new Parse.Query('bookings');
  query.equalTo('status', 'confirmed');
  const now = new Date();
  query.greaterThanOrEqualTo('startTime', now);
  query.lessThanOrEqualTo('startTime', new Date(now.getTime() + 60 * 60 * 1000));
  const results = await query.find({ useMasterKey: true });

  const pushType = "bookingConfirmed";

  const pushQuery = new Parse.Query(Parse.Installation);
  pushQuery.containedIn("userId", results.map(result => result.get('buyerId')).concat(results.map(result => result.get('placeOwner'))));
  await Parse.Push.send({
    where: pushQuery,
    data: {
      title: 'New Booking Coming Up',
      alert: 'You have a booking coming up soon!',
      pushType
    }
  }, { useMasterKey: true });

  return (`Successfully sent ${results.length} new notifications!`);
});

这篇关于解析云代码作业功能优化的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆