如何使用 Parse Cloud Code 更新对象的属性?

Posted

技术标签:

【中文标题】如何使用 Parse Cloud Code 更新对象的属性?【英文标题】:How to update a property of an object using Parse Cloud Code? 【发布时间】:2014-08-27 18:19:20 【问题描述】:

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

我想我会这样做的方法是查询特定的Parse.Installation 实例,然后设置它的通道属性。然而,这似乎不起作用。我正在尝试遵循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"]);
);

【问题讨论】:

parentUser 设置在哪里?你为什么在你的 find 中使用return 调用?如果您预计最多 1 场比赛,为什么要使用 find 而不是 first?为什么不对实际对象本身调用set()?你为什么不打电话给save()saveInBackground() parentUser 是由包含函数调用的参数,它在 fxn 的不同部分使用没有任何问题,所以我认为这不是问题。我认为必须在那里使用 return,并且使用 find 而不是 first 是一个愚蠢的错误。我如何在对象上调用set() 【参考方案1】:

我的做法如下:

// 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() 函数会更快更容易。

我在first() 返回的实际installation 对象上调用set()

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

【讨论】:

以上是关于如何使用 Parse Cloud Code 更新对象的属性?的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 应用程序中更新 PFObject 的密钥时,需要从 Parse Cloud Code 保存和登录时运行代码

删除 Parse Cloud Code 中的其他文件

使用 Parse Code Cloud Javascript 函数更改 Parse 列的值

如何在 Parse Cloud Code 和客户端之间正确传递参数? (httpRequest 示例)

如何将 Parse Cloud Code 中的值返回到我的 iOS 应用程序?

使用 Parse Cloud Code 从数组中删除对象