如何使用 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
对象实例都有一个指向特定用户的指针。我有一个为每个用户运行的后台作业,我想要在这部分后台作业中将相应的用户Installation
的channel
属性设置为["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 Code Cloud Javascript 函数更改 Parse 列的值
如何在 Parse Cloud Code 和客户端之间正确传递参数? (httpRequest 示例)