Parse.com Получить объект указателя внутри массива пользовательских объектов

У меня есть столбец как массив, где я храню данные с указателем на сущность _User:

[{
  "score": 500,
  "user":{
    "__type":"Pointer",
    "className":"_User",
    "objectId":"b80TtUfOwH"
  }
}, {
  "score": 1000,
  "user":{
    "__type":"Pointer",
    "className":"_User",
    "objectId":"b80TtRdaw"
  }
}]

Я хочу получить весь массив в виде включения с заполненным пользовательским свойством (таблица - это Team, а members - это столбец Array):

var query = new Parse.Query("Team");
query.include("members");
query.include("members.user");

Я пробовал эти включения, и пользователь обнаруживается, но не заполнен.

Можно ли сделать это одним запросом? Как это будет?

Я хочу использовать Array Column (без указателя массива), потому что он не будет больше 10, и я хочу только один запрос.

2 ответа

Если то, что вы пробовали, не работает, то я ожидаю, что это невозможно.

Альтернатива состоит в том, чтобы сделать это в облачном коде, где вы можете быстро извлечь весь вложенный контент и отформатировать его в одном ответе.

РЕДАКТИРОВАТЬ теперь, когда я понимаю проблему... Объекты в массиве не указатели. Содержать указатель - это не то же самое, что указатель. Не умная формулировка include будет работать, чтобы получить пользователя.

Что делать? У команд есть участники, которые являются людьми. Это довольно универсальный факт, поэтому я бы предложил изменить свойство members, чтобы оно представляло собой массив фактических указателей. С этим, это предложение из моего первого редактирования будет работать, хотя, я думаю, вы уже знали это...

var query = new Parse.Query("Team");
query.include("members");
query.find().then(function(teams) {
    // teams will contain fully fetched users in the members property
});

Но где эти другие данные в объектах массива должны идти? Это зависит от значения этих данных. Действительно ли данные относятся к отношениям между командой и участником? (Хороший пример чего-то, что могло бы быть - контракт профессионального игрока с командой). "Оценка" не звучит как такая вещь. Я бы нашел другое место, чтобы поместить его (как в объекте, который записывает игры).

В общем, когда ClassA относится к ClassB (Team -> User for you), атрибуты имеют три места: в каждом классе и в отношениях между ними. Если атрибут действительно должен принадлежать отношению, то вам понадобится ClassC, который будет нести этот атрибут.

Еще одна вещь: даже в случае атрибута, который действительно принадлежит отношению, вы часто можете ввести его в целевой класс (ClassB). Например, контракт профессионального игрока может относиться к его / ее отношениям со своей командой, но если они заключают контракт только с одной командой за раз, вы можете немного обмануть и прикрепить это к игроку.

Другие вопросы по тегам