检测解析中变化的更好方法 class?

A better way to detect a change in a parse class?

目前我设置了一个计时器,每 2 秒查询一次解析 class 以查看是否有任何数据已更改。如果数据已更改,它会调用 refreshData 方法,以便我的视图可以使用新的解析数据进行更新。 因此,每当数据在解析 class 中更新时,它几乎会立即在应用程序中更新。

问题是这会导致大量不必要的网络流量,我需要避免这种情况。

我该怎么做才能将计时器替换为检测数据何时在解析中更改的东西 class 然后告诉应用程序调用 refreshData 方法?

我不确定我的解决方案是否符合您的需求,但在 CloudCode 中使用 beforeSave 触发器,结合 DirtyKeys 将节省您的时间和查询:http://blog.parse.com/learn/engineering/parse-objects-dirtykeys/

使用 DirtyKeys 你可以检测到你的 class 上发生了一些变化,然后你可以构建新的触发器并在完成后做任何你需要做的事情。

保存后触发器

    //this will trigger everytime the className objects has changed
Parse.Cloud.afterSave("className", function(request) {
    //Do some stuff here //like calling http request or sending push 'data has changed' to installed mobile device
        console.log("Object has been added/updated"+request.object.id);

});

https://parse.com/docs/js/guide#cloud-code-aftersave-triggers

您需要先部署一个云代码,然后它会处理您的问题:-)

在某些情况下,您可能希望在保存对象后执行一些操作,例如推送。您可以通过使用 afterSave 方法注册处理程序来完成此操作。例如,假设您想要跟踪博客上的评论数 post。您可以通过编写如下函数来实现:

Parse.Cloud.afterSave("Comment", function(request) {
  query = new Parse.Query("Post");
  query.get(request.object.get("post").id, {
    success: function(post) {
      post.increment("comments");
      post.save();
    },
    error: function(error) {
      console.error("Got an error " + error.code + " : " + error.message);
    }
  });
});

无论处理程序如何终止,客户端都会在处理程序终止后收到对保存请求的成功响应。例如,即使处理程序抛出异常,客户端也会收到成功的响应。 运行 处理程序发生的任何错误都可以在云代码日志中找到。

如果您想在 Parse JavaScript SDK(例如 Parse.User)中为预定义的 class 使用 afterSave,则不应为第一个参数传递字符串。相反,您应该传递 class 本身。