我有一个使用 Parse 作为后端编写的 iOS 应用程序。
用户可以在系统中存储项目。一个项目有一张或多张与之关联的图片。默认情况下,用户的项目和图片只能由该用户访问。用户可以为项目生成警报。当项目具有警报时,将授予对该项目及其图片的公共读取访问权限。当警报到期时,我想撤销这些对象的公共读取访问权限。
目前,我在创建警报时通过 iOS 客户端添加公共访问权限。因为警报可能会过期或被用户关闭,所以我试图在处理程序中after_save
处理 Parse 的云代码中的另一半代码。
我目前正在尝试以下方法:
if (alert.get("isActive") === false) {
// This alert has been rendered inactive, so make sure all photos are not publically readable
var photos = alert.get("photos");
if (photos !== undefined && photos.length > 0) {
for (var i = 0; i < photos.length; i = i + 1) {
var photo = photos[i];
photo.fetch().then(function () {
var photoACL = photo.getACL();
photoACL.setPublicReadAccess(false);
photo.setACL(photoACL);
photo.save();
});
}
}
}
警报有一个名为“照片”的数组。这些中的每一个都应该是指向具有 parseClassName“照片”的对象的指针。
当我查看控制台日志时,我看到了针对传入警报报告的预期数据。我看到了警报及其属性等。具体来说,“照片”数组看起来就像我认为的那样。
但是,有问题的是,我似乎无法弄清楚如何操作该数组。我不断收到的错误是我无法调用setPublicReadAccess
. undefined
太好了,这意味着那photoACL
是undefined
,但是为什么呢?alert.photos
数组中的项目是ParseObject
实例。那应该不行.fetch()
吧?
此外,当我尝试将对象本身记录到控制台(使用console.log(JSON.stringify(photo))
)时,我得到奇怪的不一致结果。有时我只是得到{"objectId":"whatever"}
,但有时我会看到包含所有属性的整个对象。