У меня есть приложение iOS, которое я написал с использованием Parse в качестве бэкэнд.Parse.com: удалить общедоступный доступ для чтения для массива объектов
Пользователь может хранить предметы в системе. Элемент имеет одну или несколько снимков, связанных с ним. По умолчанию элементы и изображения пользователя доступны только этому пользователю. Пользователь может генерировать предупреждение для элемента. Когда элемент имеет предупреждение, предоставляется доступ к общедоступному доступу к элементу и его изображениям. Когда истекает срок действия предупреждения, я хочу отменить открытый доступ для чтения для этих объектов.
В настоящее время я добавляю общий доступ через клиента iOS, когда создается предупреждение. Поскольку предупреждение может истекать или быть отключенным пользователем, я пытаюсь обработать вторую половину кода в Cloud Code от Parse в обработчике after_save
.
Я сейчас пытаюсь следующее:
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"}
, но иногда я вижу весь объект со всеми его включенными свойствами.
Когда я прочитал ваш ответ, я был уверен, что вы ошибались! Я думал, что элемент был неявно заполнен результатами из-за вызова «извлечения», но я ошибся, и вы были правы! Благодаря! – mbm29414