我的 Parse 数据库中的每个 Parse Installation
对象实例都有一个指向特定用户的指针。我有一个为每个用户运行的后台作业,我想要在后台作业的这一部分中执行的操作是将相应用户的 Installation
的 channel
属性设置为["yesPush"]
,用于推送通知定位目的。
我认为这样做的方法是查询特定的Parse.Installation
实例,然后设置其 channel 属性。但这似乎不起作用。我正在尝试遵循 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"]);
});
最佳答案
我的做法如下:
// 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()
函数是您在作业中处理大量数据的方式。如果您在其中执行其他异步任务,您需要返回他们的 promise 。
如果我们只期望一条记录,first()
函数会更快、更容易。
我正在对 first()
返回的实际 installation
对象调用 set()
。
我正在返回 save()
promise 以允许 promise 链接。
关于javascript - 如何使用 Parse Cloud Code 更新对象的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25534366/