#javascript #parse-platform
#javascript #синтаксический анализ-платформа
Вопрос:
В моем приложении есть следующая структура:
MessageRecipients -> Message -> User
Message -> Activity
где -> представляет указатель. Я выделил таблицы сообщений и получателей сообщений, потому что мне нужно зафиксировать, было ли сообщение прочитано каждым получателем.
Запрос, который я хочу выполнить, — это найти все сообщения для получателя. Итак, мне нужно включить сообщение в запрос MessageRecipients, но я также хотел бы включить вложенные объекты User и Activity.
var MessageRecipient = new Parse.Query('MessageRecipient');
messageQuery.equalTo('recipient', query.recipient);
messageQuery.include('message');
Сообщение возвращается без заполнения активности и отправителя. Я попытался вызвать messageQuery.include(‘activity’), но это не сработало, поскольку activity находится не в правильной таблице.
Есть ли способ выполнить этот запрос или вам нужно выполнять отдельные запросы для вложенных объектов?
Ответ №1:
Вам также необходимо включить эти вложенные объекты:
messageQuery.include('message');
messageQuery.include('message.user'); // if user is the column name
messageQuery.include('message.activity'); // if activity is the column name
Комментарии:
1. Просто полезный совет для всех, кто читает этот ответ — даже если вы можете включать вложенные объекты, используя точечную нотацию, как описано в этом правильном ответе, это не означает, что именно так вы получаете доступ к объекту в вашем адаптере. Вам придется разделить доступ следующим образом: ParseObject activity = object.getParseObject(«сообщение»).getParseObject(«активность»); если вы попробуете ParseObject activity = object.getParseObject(«сообщение.активность»); if выдаст вам исключение NullPointerException.
2. Допустим, я делаю запрос к
MessageRecipients
и хочу, чтобы этот запрос имел порядок возрастания от классаActivity
(createdAt), есть ли какой-либо способ сделать это?3. Нет, вы можете упорядочивать запрос только на основе столбцов в базовом классе. Похоже, вам придется выполнить некоторую сортировку на стороне клиента.
4. @MaxWorg большое спасибо! Я думаю, что это должно быть включено в конце ответа. Столкнулся с той же проблемой на Android
![]()
5. Подсказка для includeAll() в JS. Насколько я пытался, это не работает с includeAll(), но если вы включите, как в примере, это сработает
Ответ №2:
Вы также можете добиться этого в одной строке:
messageQuery.include( ["message", "message.user", "message.activity"] );
Комментарии:
1. отличный момент! подобные детали никогда не упоминаются в документах Parse!