0

我的 Parse 数据库中的每个 ParseInstallation对象实例都有一个指向特定用户的指针。我有一个为每个用户运行的后台作业,我想在这部分后台作业中将相应的 userInstallationchannel属性设置为["yesPush"],以用于推送通知目标。

我想我会这样做的方式是查询特定Parse.Installation实例,然后设置它的 channels 属性。然而,这似乎不起作用。我正在尝试遵循Parse Cloud Code Docs中的指南,但这不是正确的用例,或者我没有正确遵循它。

代码:

var installationQuery = new Parse.Query(Parse.Installation);
installationQuery.equalTo('userId', parentUser);

installationQuery.find().then(function(results) {
  return Parse.Object.set('channels', ["yesPush"]);
});
4

1 回答 1

2

我会这样做的方式如下:

// for every User
var userQuery = new Parse.Query(Parse.User);
userQuery.each(function(user) {
  var installationQuery = new Parse.Query(Parse.Installation);
  installationQuery.equalTo('userId', user);

  return installationQuery.first().then(function(installation) {
    installation.set('channels', ['yesPush']);
    return installation.save();
  });
}).then(function() {
  status.success();
}, function(error) {
  status.error(error.message);
});

each()功能是您在作业中处理大量数据的方式。如果您在其中执行其他异步任务,则需要返回他们的承诺。

如果我们只期望一条记录,该first()功能会更快更容易。

我正在set()调用installationfirst().

我正在返回save()承诺以允许承诺链接。

于 2014-08-28T04:53:41.150 回答