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

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

2 ответов


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

обзор

документы:

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

Поддерживаемые Типы Ассоциации

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


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

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

мы собираемся заняться ассоциациями и транзакциями дальше и надеемся подготовьте их в следующем месяце или около того.

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

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

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

пример из particle banana работает, но на самом деле должен использовать "новый", как "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);
});