2015-08-05 2 views
1

У меня есть два класса - _User и Car. A_User будет иметь небольшое/ограниченное количество автомобилей, которыми они владеют. Каждый автомобиль имеет только ОДНОГО владельца и, следовательно, столбца «владелец», который является для _User. Когда я добрался до страницы пользователя, я хочу увидеть их _User информацию и все их Автомобили. Я хотел бы сделать один звонок в Облачном коде, если это необходимо.Parse - Как запросить класс и включить в него другой, который указывает на него?

Здесь я смущаюсь. Есть 3 способа, которые я мог бы сделать это:

  1. В _User есть столбец отношений под названием «автомобили», который указывает на каждый автомобиль. Если да, то почему я не могу использовать функцию include (cars) в отношении, чтобы включить данные Cars в мой запрос? !! _User.cars = отношения, Car.owner = _User (указатель)

  2. Опросить _User, а затем запросить все автомобили с (владелец == _User.objectId) отдельно. Это два запроса. _User.cars = нуль, Car.owner = _User (указатель)

  3. В _User есть массив указатели колонка под названием "машина". Вручную вводите указатели на автомобили при создании автомобиля. При запросе пользователя я буду использовать «include (cars)». _User.cars = [Автомобиль (указатель)], Car.owner = _User (указатель)

Что рекомендуемый способ сделать это и почему? Какой из них самый быстрый? Документация просто оставляет меня в замешательстве.

ответ

1

Я рекомендую вам третий вариант, и да, вы можете попросить включить массив. Вам даже не нужно «вручную вводить» указатели, вам просто нужно добавить объекты в массив, и они будут автоматически преобразованы в указатели.

1

У вас есть правильные идеи. Просто уточнить их немного:

  1. A отношение. Пользователь может иметь столбец отношений, называемый автомобилями. Чтобы получить от пользователя к машине, есть запрос пользователя, а затем второй запрос, например user.relation("cars").query, на котором вы бы указали .find().

  2. Что вы могли бы назвать классом owner_to в автомобиле. Чтобы получить от пользователя к машине, у вас будет запрос на получение вашего user и вы создадите carQuery как carQuery.equalTo("user", user)

  3. Массив указателей. Для небольших коллекций это превосходит отношение, потому что вы можете агрессивно загружать автомобили при запросе пользователя, указав include("cars") на запрос пользователя. Не уверен, есть ли второй запрос под обложками - возможно, нет, если parse (mongo) хранит их как встроенные.

Но я бы не стал слишком привязан к одному или двум запросам. Использование обещающих форм find() сохранит ваш код в порядке и порядке. Вероятно, существует небольшое преимущество в скорости массива, что хорошо, а размер коллекции мал (< 100 - мое правило).

Это легко для Google (или я добавлю здесь, если у вас есть конкретный вопрос) примеры кода для поддержания отношений и для перехода из user-> car или car-> user для каждого подхода.

+0

И вот почему у него есть 30k + rep points. Пока я только дал вам мое предложение, он объяснил, как он (и я) выбирает между ними. Я поработаю, чтобы добраться туда. Upvoted =] – gfpacheco

Смежные вопросы