Как выполнять SQL-соединения и отношения в Sails.js и Waterline?

Может ли кто-нибудь помочь мне настроить реляционную схему и выполнять объединения в sails.js?

Ответ 1

Ассоциации официально поддерживаются в Waterline

Обзор

Из документов:

С помощью Sails и Waterline вы можете связать модели с несколькими хранилищами данных. Это означает, что даже если ваши пользователи живут в PostgreSQL, а их фотографии живут в MongoDB, вы можете взаимодействовать с данными, как если бы они жили вместе в одной базе данных. Вы также можете иметь ассоциации, которые охватывают разные соединения (например, хранилища данных/базы данных) с использованием одного и того же адаптера. Это полезно, если, например, вашему приложению необходимо получить доступ к обновленным данным рецепта, хранящимся в базе данных MySQL, в вашем центре данных компании, а также хранить/извлекать данные о компонентах из новой базы данных MySQL в облаке.

Поддерживаемые типы ассоциаций

Запланированные типы ассоциаций


Оригинальное сообщение

Я автор Waterline, ORM, используемый в Sails. Ватерлиния - бренд новый, и мы постоянно добавляем функции. В настоящее время у нас нет поддержка ассоциаций, но следующая в дорожной карте. Мы разработали API для ассоциаций, которые, как мне кажется, понравятся большинству людей. Вы может просматривать текущую работу и предлагаемый API по адресу: [Предлагаемые паруса Ассоциации API] [1].

Мы собираемся заняться Ассоциациями и Сделки дальше и надеемся, что сделайте их готовыми в следующем месяце или около того.

В то же время, если вы используете адаптеры MySQL или PostgreSQL они оба раскрывают метод raw .query(), который позволяет вам пройти сделанный вручную sql-запрос и выполненный. Я полностью понимаю это не идеальна, но должна позволять вам продолжать создавать приложение в то время как мы получаем поддержку ассоциаций и объединений.

Сигнатура функции для метода запроса:

Model.query(<sql query>, <optional data>, callback);

Ответ 2

Пример из банана частиц, но на самом деле должен использовать "новый", например "var instance = new User._model (values)". Я использую следующий код, и он работает.

Accounts.query(query, function(err, accounts) {
  if (err)
    return fn(err);

  accounts = _.map(accounts, function(account) {
    return new Accounts._model(account);
  });

  fn(null, accounts);
});