Parse Query Включить метод, не включая все ожидаемые данные - PullRequest
0 голосов
/ 19 сентября 2018

Я делаю запрос к классу, где у меня есть указатель на пользователя.

Я делаю query.include('byUser'), и когда я выхожу из системы, результат запроса отображается, но когда я пытаюсь получить определенный атрибут, такой как электронная почта.Это не существует.

Я также сначала подумал, что странно, что я должен получить информацию о пользователе, выполнив:

const userDetails = query.get("byUser").attributes;

Должен ли я сделать .attributes?А также, почему не появляется электронное письмо.Все остальное, похоже, отображается в разделе атрибутов.

Спасибо

1 Ответ

0 голосов
/ 21 сентября 2018

Обратите внимание, что в процессе разбора вы не можете запрашивать поле электронной почты других пользователей.Вы можете увидеть поле электронной почты, только если вы вошли в систему.Это механизм безопасности.

A.Если вы хотите получить поле электронной почты для пользовательского объекта, вы можете сделать две вещи:

  1. Передать маркер сеанса пользователя в запрос.

new Parse.Query(Parse.User).get(<userId>,{sessionToken:<userSessionToken>});

Использовать мастер-ключ.(Примечание: Вы должны установить мастер-ключ раньше.)

new Parse.Query(Parse.User).find({useMasterKey:true});

B.Ваш метод include правильный, и он будет извлекать объект byUser.Вам не нужно использовать .attributes.

ОБНОВЛЕНИЕ: Вы также можете установить поле publicEmail в своем классе User, которое не будет отфильтровано сервером синтаксического анализа.чтобы автоматизировать это, вы можете написать облачный код.

Пример облачного кода (на parse-сервере V 3.0.0 и выше):

ОБРАТИТЕ ВНИМАНИЕ, ЧТО ВЫ НЕ МОЖЕТЕ ИСПОЛЬЗОВАТЬ ASYNCФУНКЦИИ ДЛЯ PARSE-SERVER

Parse.Cloud.beforeSave(Parse.User, async req=>{
  if (!req.original && !req.master && req.object.get('email')){
    req.object.set('publicEmail',req.object.get('email'));
  }
})

Теперь, если новый пользователь зарегистрируется, этот облачный код автоматически добавит новое поле в пользовательский объект publicEmail, который не фильтруетсяпо parse-серверу.

...