Как выполнить соединение моделей + условие отношений в парусах. js? - PullRequest
2 голосов
/ 09 января 2020

Как сделать запрос на объединение моделей (условие) и отсортировать их по реляционным моделям в Sails?

Пример: у меня есть 4 таблицы (коллекции в mongodb) и 4 связанных модели в mongodb:

  • Пользователь: user_id, имя
  • Follow: user_id, follow_id (идентификатор пользователя отслеживается)
  • Точка: user_id, точка
  • Сообщение: имя, содержимое , user_id, creation_at

Итак, из таблицы сообщений я хочу сделать запрос, чтобы найти сообщения пользователей, за которыми я следил, и отсортировать их по точке. Как этот сырой sql:

SELECT post.* FROM post 
LEFT JOIN user_point up ON up.user_id = post.user_id
WHERE post.user_id IN (1,2,3,4) // assume I got my following_user_ids result is 1,2,3,4 for this case so no need to join follow table
ORDER BY up.point DESC // high point then first return

Я не знаю, как это можно сделать с помощью модели Sails? Я прочитал много инструкций, не получил никакой помощи. Почти люди говорят: Sails Association, но она просто помогает вернуть отношение вместо того, чтобы делать где или упорядочить, чтобы отсортировать результаты оригинальной модели (это случай: post).

Я работал с Yii2, PHP рамки, так что в этом случае я могу сделать это легко:

Post::model()->leftJoin('user_point up', 'up.user_id = post.user_id')->where(['post.user_id' => [1,2,3,4])->orderBy(['up.point' => SORT_DESC])->all();

Я застрял в Парусах, очень спасибо, если кто-то поможет мне !!!

1 Ответ

0 голосов
/ 10 января 2020

Поскольку вы используете Mon go и вам нужна полная мощность обычных JOIN, вы, вероятно, будете вынуждены использовать какое-то другое решение ORM (например, пакет mongodb на npm) для подобных запросов.

Почему? См. API-документацию для sendNativeQuery () , в которой говорится, что собственные функции запросов доступны только для SQL -подобных СУБД.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...